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