C#函数一些关键关注点/局部函数

0.局部函数

/// <summary>
///下面例子中,InnerMethod是一个局部函数,它在OuterMethod方法内部定义
///局部函数InnerMethod可以访问OuterMethod中的变量,比如outerVariable
///需要注意的是,局部函数只在其封装的上下文中有效
///局部函数是C#7.0及更高版本中的一个新特性

/// </summary>
public void OuterMethod()
{
    int outerVariable = 10;

    //声明局部函数
    void InnerMethod()
    {
        int innerVariable = 20;
        int sum = innerVariable + outerVariable;
        Console.WriteLine($"The sum is: {sum}");
    }

    InnerMethod(); // 调用局部函数
}

1.方法的声明:
[方法修饰符] 返回值类型 方法名 ([形参列表]) {方法体}

方法的调用:
对象.方法名([实参列表]);

形参是定义方法的参数列表,实参是调用方法时传给方法的参数列表,有参数值

2.如果方法体内仅仅有一行代码,则可以简写成Lambda表达式形式:
int Sum(int x,int y){retun x+y;}
简写:int sum(x,y)=>x+y;

3.参数数组params,也称可变参数, 表示函数的参数是个数可变的

用于表示参数类型相同,但参数数量不确定.
调用含参数数组的方法时,若实参是数组则按引用传递,若实参是变量则按值传递
且传入的实参必须是与形参类型匹配的一维数组或N个的匹配类型的数据.如
static void M1(params string[] strs){//...}

string[] strs_Params = new string[]{"Lily","Lucy","Jim","David","ZhangSan"};
M1(strs_Params);

M1("ZhangSan","LiSi","Wangwu");
如果方法定义了多个参数,则params修饰的参数数组要放到最后,并且只能使用一次。
 

4.命名参数:调用方法时可以不按照形参列表顺序传递实参,按照“形参名:实参”的对应关系,一一传递.
对象.方法名(形参1:实参1,形参2:实参2,形参3:实参3..形参N:实参N)

优点:
调用方法时,可以不按照形参顺序给参数赋值;只需要将参数和参数值用冒号分开,一一对应即可
可选参数也可以这么用.如
void Display(int a,int b=2,int c =3)
{
    //statements
}

Diaplay(b:5,c:8,a:1)//清晰明了

5.方法的重载(overloading):方法同名且签名不同的可以重载:参数数量不同,参数类型不同,参数传递方式不同,可以重载.

6.和分部类(partial)一样,也有分部方法
分部方法在分部类的部分A中声明分部方法定义,而在分部类的部分B中声明分部方法实现

7.外部方法external method
当方法声明包含 extern 修饰符时,称该方法为外部方法(external method)。
外部方法是在外部实现的(通常为dll库函数),故外部方法声明不提供任何实际实现,其方法体只由一个分号组成。
外部方法不可以是泛型。
extern 修饰符通常与 DllImport特性一起使用,以引用由 DLL(动态链接库)实现的外部函数。
当外部方法包含 DllImport特性时,该方法声明必须同时包含一个 static 修饰符

8.递归方法:递归本身就是一个循环,递归的本质就是自己调用自己

9.out参数:在方法内必须赋值,一个方法可以有多个out参数

10 ref参数:在调用方法前,必须给ref实参进行赋值

11 可选参数,放在必选参数后面,在定义可选参数时,需要给可选形参赋个初始值,调用方法不传入指定的可选参数值时,会传入默认的可选参数值.

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值