1. lamda 表达式的类型并不是委托类型,但他可以显示或隐式的转换为一个委托实例;如下:
Fun<string,int> StringLength=delegate(string text){return text.length;};用匿名方法定义委托实例;
Fun<string,int>StringLength=(string text)=>{return text.length;};用lamda表达是定义委托实例;
new Fun<string,int>(delegate(string text){return text.length;});
new Fun<string,int>((string text)=>{return text.length;});
2.委托:对一类方法引用的一种机制;创建一个委托实例就是创建一个方法的引用;如下:
delegate int StringLengthDelegate(string);//声明委托类型;
StringLengthDelegate delegateInstance=new StringLengthDelegate (Method);
3.匿名方法: 创建一个方法体,不用指定方法名;只能在使用委托的时候创建,并且用关键字 delegate创建。
button1.Click +=
delegate
(
object
o, EventArgs e) { MessageBox.Show(
"Click!"
); };
4.匿名委托:
button1.Click += new EventHandler(button1_click);
也可写成:
button1.Click += button1_click;
方法直接赋值给委托,这就是匿名委托。编译时会自动加上new Eventhandler的。