C# 函数与委托

来源:互联网 发布:从新网代理商转出域名 编辑:程序博客网 时间:2024/05/18 18:03
函数
函数的定义包括函数名、返回类型和参数列表(参数数量和类型)。
函数的名称和参数共同定义函数的签名
注意:const变量,也就是常量。

  1. 参数:
C#允许为函数指定一个(只能一个)特殊参数,这个参数必须是函数定义中的最后一个参数,成为参数数组。参数数组允许使用个数不定的参数调用函数,可以使用params关键字定义它们。

  1. 引用参数和值参数:
引用参数用ref关键字来指定,也就是说被ref关键字指定的引用参数在函数处理后,本身的值会发生变化。
而值参数仅仅为函数的输入参数赋值,函数结束后,原本的值参数不发生变化。
输出参数使用关键字out指定,与ref类似。区别有:
  • 把未赋值的变量用作ref参数是非法的,但可以把未赋值的变量用作out参数。
  • 另外,在函数使用out参数时,必须把它看成未赋值。

  1. 变量的作用域
全局变量,要用static关键字声明;
如果局部变量和全局变量同名,那么全局变量要用Program.value声明,以防止在局部代码中被局部变量屏蔽。
必须在使用变量前,对其声明初始化
使用static声明的函数版本必须使用全局变量。

  1. main函数
main函数可以是void或者int返回类型;
String[] args是可选参数,表示程序启动方式。

  1. 结构函数:在结构体中定义的函数
  2. 函数的重载
函数重载允许创建多个同名函数,每个函数使用不同的参数类型。
函数是根据函数的签名进行区分的(函数名 +参数)。

  1. 委托delegate
委托是存储函数引用的类型。
委托的声明非常类似于函数,但不带函数体,而且要使用delegate关键字。
委托的声明指定了一个返回类型和一个参数列表

定义委托后,可以声明该委托的变量。写着把这个变量初始化为与委托具有相同返回类型和参数列表的的函数引用。之后,就可以使用委托变量调用这个函数,就像该变量是一个函数一样。

要点:
  • 委托类型要与被委托函数类型相同。
  • 委托是一个类型,需要实例化为一个对象(声明该委托的变量)。这个变量与被委托函数类型相同。
  • 实例化委托变量(对象)时,就要绑定被委托函数。之后直接使用委托变量,以函数调用的方式调用被委托函数。

委托类型的声明:static delegate ProcessDelegate(double p1, double p2);
使用委托类型声明变量:ProcessDelegate process;
初始化process委托变量:process = new ProcessDelegate(Function); //把一个函数引用(函数名)赋值给委托变量
或者:process = Function; // 但是这样可读性差。
最后,通过委托调用函数:process(p1,p2); // 这里把委托变量看成函数名

委托的使用与事件处理有关,事件处理属于高级C#内容 。
原创粉丝点击