int b); 再定义一个方法: int Add(int a

时间:2021-12-29 08:12:42

Lambda表达式。
Lambda表达式是C#3.0的新内容(JAVA是JDK8才开始撑持的),如果您之前学习的C#2.0,不认识也就不奇怪了。

 

下面是C#语言和Visual Studio的一些版本对应信息:

C# 1.0 with Visual Studio.NET
C# 2.0 with Visual Studio 2005
C# 3.0 with Visual Studio 2008,2010(.net 2.0, 3.0, 3.5)
C# 4.0 with Visual Studio 2010(.net 4)
C# 5.0 with Visual Studio 2012(.net 4.5),2013(.net 4.5.1, 4.5.2)
C# 6.0 with Visual Studio 2015(.net 4.6, 4.6.1, 4.6.2)
C# 7.0 with Visual Studio 2017(.net 4.6.2, 4.7)
C#版本是VS版本决定的,也可与相应的.net framework版本对应起来        


给您举个例子。
例如,我界说一个委托:
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));

*******************************************************************************

C#中 += (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();
}