当前位置: 首页 > news >正文

C# 方法的定义

方法的由来


1.方法(method)的前身是C/C++语言的函数(function)

方法是面向对象范畴的概念,在非面向对象语言中仍然称为函数

2.永远都是类(或结构体)的成员

C#语言中函数不可能独立于类(或结构体)之外

只有作为类(结构体)的成员时才被称为方法

C++中是可以的,称为“全局函数”


3.是类(或结构体)最基本的成员之一

类(或结构体)最基本的成员只有两个--字段与方法(成员变量与成员函数),本质还是数据+算法

方法表示:类(或结构体 )能做什么事情


4.为什么需要方法和函数


目的1:隐藏复杂的逻辑

目的2:把大算法变为小算法

目的3:复用(reuse,重用)

示例:圆锥体积计算圆面积、圆柱体积、圆锥体积

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace MethodExample
{
    internal class Program
    {
        static void Main(string[] args)
        {
            Calculator calculator= new Calculator();
            double r = 4.0;
            double h = 3.0;
            double circleArea = calculator.GetCircleArea(r);
            double cylinderVolume = calculator.GetCylinderVolume(r, h);
            double coneVolume = calculator.GetConeVolume(r, h);

            Console.WriteLine(circleArea);
            Console.WriteLine(cylinderVolume);  
            Console.WriteLine(coneVolume);

            Console.ReadLine();
        }
    }

    class Calculator
    {
        public double GetCircleArea(double r)
        {
            double area = Math.PI * r * r;
            return area;
        }

        public double GetCylinderVolume(double r,double h)
        {
            double volume = GetCircleArea(r)*h;        //方法的复用
            return volume;
        }

        public double GetConeVolume(double r,double h)
        {
            double volume = GetCylinderVolume(r,h)/ 3; //方法的复用
            return volume;
        }

    }

}
 

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • JavaScript -- 总结 9 (小白)
  • k8s使用kustomize来部署应用
  • 排序算法1:堆排序,直接插入排序与希尔排序
  • System Verilog--$scanf应用举例
  • 学习日志8.7--防火墙安全策略
  • Hadoop单机及集群部署
  • html--前端
  • 前端构建工具|vite快速入门
  • DVWA(SQL注入)medium、high
  • ESXI加入VMware现有集群提示常规性错误
  • RabbitMQ之基于注解声明队列交换机:使用@RabbitListener实现消息监听
  • Java日志框架
  • npm、pnpm、yarn镜像源设置
  • 深入探究Liunx服务器内存:模拟程序实际占用与缓存占用内存
  • 深入理解 Go 语言信号量 Semaphore
  • 【跃迁之路】【699天】程序员高效学习方法论探索系列(实验阶段456-2019.1.19)...
  • HTTP那些事
  • MySQL QA
  • npx命令介绍
  • SpriteKit 技巧之添加背景图片
  • vue2.0开发聊天程序(四) 完整体验一次Vue开发(下)
  • 高程读书笔记 第六章 面向对象程序设计
  • 简单易用的leetcode开发测试工具(npm)
  • 前端技术周刊 2019-01-14:客户端存储
  • 使用 Xcode 的 Target 区分开发和生产环境
  • 数据仓库的几种建模方法
  • 想晋级高级工程师只知道表面是不够的!Git内部原理介绍
  • 用 Swift 编写面向协议的视图
  • 阿里云API、SDK和CLI应用实践方案
  • 资深实践篇 | 基于Kubernetes 1.61的Kubernetes Scheduler 调度详解 ...
  • ​卜东波研究员:高观点下的少儿计算思维
  • #100天计划# 2013年9月29日
  • (3)(3.2) MAVLink2数据包签名(安全)
  • (9)YOLO-Pose:使用对象关键点相似性损失增强多人姿态估计的增强版YOLO
  • (android 地图实战开发)3 在地图上显示当前位置和自定义银行位置
  • (C语言)逆序输出字符串
  • (分享)一个图片添加水印的小demo的页面,可自定义样式
  • (附源码)ssm经济信息门户网站 毕业设计 141634
  • (几何:六边形面积)编写程序,提示用户输入六边形的边长,然后显示它的面积。
  • (欧拉)openEuler系统添加网卡文件配置流程、(欧拉)openEuler系统手动配置ipv6地址流程、(欧拉)openEuler系统网络管理说明
  • (一)springboot2.7.6集成activit5.23.0之集成引擎
  • (一)UDP基本编程步骤
  • (一)VirtualBox安装增强功能
  • (正则)提取页面里的img标签
  • (转)iOS字体
  • ... 是什么 ?... 有什么用处?
  • .bat批处理(二):%0 %1——给批处理脚本传递参数
  • .locked1、locked勒索病毒解密方法|勒索病毒解决|勒索病毒恢复|数据库修复
  • .NET Core 2.1路线图
  • .NET CORE Aws S3 使用
  • .Net Core 微服务之Consul(二)-集群搭建
  • .Net Core 中间件验签
  • .Net Core与存储过程(一)
  • .Net FrameWork总结
  • .NET/C# 利用 Walterlv.WeakEvents 高性能地定义和使用弱事件