您的位置:首页 > 编程语言 > C#

C#匿名委托,匿名函数,lambda表达式

2015-04-02 21:50 267 查看
一、lambda表达式的由来


private void button1_Click(object sender, EventArgs e)
{
//匿名委托
  //是一个没有名字的数据类型

  //创建匿名委托的一个变量:Func<int, int> del

  //怎样确定它的签名:需要若干数据类型作为参数(前面的规定参数类型,最后一个规定返回值类型)

//匿名函数 delegate(int a) { return a; };
  //与普通函数的区别就是将函数名换成了delegate

//下面的表达式,就是一个通过匿名委托定义的变量del引用了一个匿名函数
//与int a=1的过程,是相同的道理
//Func<int, int> del =  delegate(int a) { return a; };
//MessageBox.Show(del(5).ToString());

//后来发现,匿名函数的参数与返回值的类型,肯定要与委托变量的对应,于是有了更简捷的写法
//就出现了lambda表达式
Func<int, int> del = a => { return a; };
MessageBox.Show(del(6).ToString());
}






小贴士

定义一个匿名委托变量,好比我们确定要造一把枪,但是这把枪还不能工作,因为它只是完成了功能设计的阶段,枪的功能就是:给它一个子弹(参数),我们得到一个高速飞行的子弹(返回值);
将一个lambda表达式给这个委托变量赋值,好比给这把枪安装枪膛、扳机等内部构造的过程,这时枪可以工作了。

四、Winform窗体中的事件



Winform窗体事件:用预先定义好的委托(EventHandle)的定义的变量(接收两个参数)。
窗体里自带一个委托变量;我们做的就是给这个变量追加函数。

1.

给窗体Load事件添加一个函数

public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
private void Form1_Load(object sender, EventArgs e)
{

}


自动生成的表达式




转到定义,可以查看Load事件的定义





                                            
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: