C#方法

C#方法_第1张图片
推荐书籍

方法的由来

方法(method)的前身是C/C++中的函数(function)

  • 方法是面向对象范畴的概念,在非面向对象语言中仍然称为函数。
$ vim fn.c
#include 

double add(double x, double y)
{
    return x + y;
}

int main()
{
    double x = 1.0;
    double y = 2.0;
    double result = add(x,y);
    
    printf("%f + %f = %f", x, y, result);
    return 0;
}

$ gcc -o fn fn.c
$ fn.exe
$ vim fn.cpp
#include 

double sum(double x, double y)
{
    return x + y;
}

int main()
{
    double x = 1.0;
    double y = 2.0;
    double result = sum(x, y);

    std::cout<

方法永远都是类或结构体的成员

  • C#语言中的函数不可能独立于类或结构体之外
  • 只有作为类或结构体的成员时才被称为方法
  • C++中存在全局函数

方法是类或结构体中最基本的成员之一

  • 最基本的成员只有两个
    字段或方法,即成员变量与成员方法,其本质还是数据+算法
  • 方法表示类或结构体能做什么事情

为什么需要方法和函数呢

  • 隐藏复杂的逻辑
  • 复用、重用(reuse)

方法定义

方法调用

方法调用与栈的关系

构造器

  • 构造器(constructor)是类型的成员之一
  • 狭义的构造器指的是实例构造器(instance constructor)
  • 声明和使用构造器
class User
{
    //字段
    public int UserID;
    public string UserName;
    public DateTime CreatedAt;
    //ctor自定义构造器:无返回值 与类名相同
    public User(int userid = 0, string username = "")
    {
        //初始化字段
        this.UserID = userid;
        this.UserName = username;
        this.CreatedAt = DateTime.Now;
    }
}

实例构造函数

实例构造函数是一种特殊的方法,在创建类的每个新实例时执行。

  • 构造函数用于初始化类实例的状态
  • 若希望从类的外部创建类的实例,需将构造函数声明为public。
  • 构造函数的名称和类名相同
  • 构造函数不能有返回值

带参数的构造函数

  • 构造函数可带参数
  • 构造函数可以被重载

方法重载(overload)

调用重载方法

Console.WriteLine(100);
Console.WriteLine(1.00);
Console.WriteLine('o');
Console.WriteLine("overload");
Console.WriteLine(true);

声明带重载的方法

public int sum(int x, int y)
{
    return x + y;
}
public int sum(int x, int y, int z)
{
    return x + y + z;
}
public double sum(double x, double y)
{
    return x + y;
}

方法签名

  • 方法签名(method signature)由方法的名称、类型参数的个数和每个形参的类型与种类组成。
  • 方法签名不能包含返回类型
  • 实例构造函数签名由它的每个形参的类型和种类组成
C#方法_第2张图片
方法签名

类型形参

public int Sum(int x, int y)
{
    return x + y;
}
public int Sum(int x, int y)
{
    return x + y;
}

参数种类

// 传值
public int Sum(int x, int y)
{
    return x + y;
}
// 传引用
public int Sum(ref int x, int y)
{
    return x + y;
}
public int Sum(out int x, int y)
{
    x = 100;
    return x + y;
}

重载决策

用于在给定参数列表和一组候选函数成员的情况下,选择一个最佳函数成员来实施调用。

namespace TestApp
{         
    class Calculator
    {
        public int Sum(int x, int y)
        {
            return x + y;
        }
        public double Sum(double x, double y)
        {
            return x + y;
        }
    }
    class Program
    {   
        static void Main(string[] args)
        {
            Calculator c = new Calculator();
            c.Sum(1, 2);
            c.Sum(1D, 2D);
        }  
    }
}

你可能感兴趣的:(C#方法)