首页 > 代码库 > C#基础知识之六

C#基础知识之六

C#基础知识之六

由朱朱编写,转载请注明出自朱朱家园http://blog.csdn.net/zhgl7688

1、  匿名方法:是在初始化委托里内联声明的方法。组成由delegate类型关键字、参数列表、语句块 ----delegate  (Parameters) { ImplementationCode  }。

2、  匿名方法使用地方:声明委托变量时作为初始化表达式、组合委托时在赋值语句的右边、为委托增加事件时在赋值语句的右边。

3、  匿名方法参数列表必须有三个方面匹配委托:参数数量、参数类型、修饰符。

4、  匿名方法省略参数列表条件:列表中不包含任何out参数和方法不使用任何参数。

5、  委托声明的参数列表包含了Params参数,在匿名方法参数列表将忽略params关键字。

6、  参数和匿名方法内部局部变量的作用域限制在实现方法的主体内。

7、  匿名方法可以访问外围作用域的局部变量和环境。

8、  在匿名方法中实现外部变量称为方法捕获。只在捕获方法还是委托的一部分,即使变量已经离开作用域,被捕获的外部变量仍然有效。

9、  Lambda表达式:代替了匿名方法,将delegate改为运算符=>,以及简化操作。样例:

MyDel del=delegate(int x)   {return x+1; };    //匿名方法

MyDel del=       (int x) =>{ return x+1; };    //Lambda方法

MyDel del=       (  x ) => { return x+1; };    //Lambda方法

MyDel del=        x =>  { return x+1; };    //Lambda方法

MyDel del=        x  =>        x+1  ;    //Lambda方法

10、  Lambda表达式列表要点:参数必须在数量、类型和位置上与委托相匹配、参数不一定要包含类型(除out或ref,此类型是必须的)、一个参数时圆括号可以省略、没有参数时,必须使用空的圆括号。

11、  触发事件:调用或触发事件的术语。当事件被触发时,注册到它的方法都会被依次调用。相当于观察者模式http://blog.csdn.net/zhgl7688/article/details/41969393。

12、  声明事件:只需要委托类型和名字,还可使用static变成静态的。

如 public  event EventhandleElapsed //Eventhandle为委托类型,Elapsed为事件名。

13、  事件是成员不是类型,不能使用new来创建它的对象,其成员被隐式自动初始化为NULL。

14、  事件委托类型使用标准的预定义EventHandler,它的声明如下:

Public delegate void EventHandler(object sender,EventArgse);

15、  订阅事件:要为事件添加事件处理程序,处理程序必须有和事件委托一致的返回类型和签名,使用+=运算符来为事件增加事件处理程序。使用-=移除一个事件处理程序。

16、  事件方法有:实例方法、静态方法、匿名方法、lambda表达式。

由朱朱编写,转载请注明出自朱朱家园http://blog.csdn.net/zhgl7688

C#基础知识之六