lamda 表达式,匿名方法,委托

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的。

   

原文地址:https://www.cnblogs.com/benhua/p/5801733.html