c#=>lambda表达式的理解

时间:2022-04-12 22:15:09
 
 
例如,我定义一个委托:
delegate int Method(int a, int b);
再定义一个方法:
int Add(int a, int b)
{
return a + b;
}
我可能需要这样通过委托调用方法:
Method m += Add;
Console.WriteLine(m(2, 3));
====================================================
但如果用 Lambda 表达式:
Method m += (a ,b) => a + b;
Console.WriteLine(m(2, 3));
可以省去方法的定义。
实际上, Lambda 表达式只是简化了匿名方法的语法而已。

C# 2.0 的匿名方法语法有助于理解
Method m += delegate(int a, int b) { return a + b; };
Console.WriteLine(m(2, 3));
--------------------------------------------
+=(s,e) =>字符的含义
 
public MainWindow(){ InitializeComponent();this.Loaded+=(s,e) =>DiscoverKinectSensor();this.Unloaded+=(s,e) =>this.kinect=null;}
在上面的代码中,+=是在委托链上增加一个委托,(s,e)=>是一个lambda表达式。这个表达式创建一个委托,委托处理的主体就是=>后面的部分。
其实这个写法相当于
this.Loaded+=new EventHandler(Form_Loaded);
private void Form_Loaded(object sender,EventArgs e){
DiscoverKinectSensor();
}