Lambda表達式。
“Lambda 表達式”是一個
匿名函數,它可以包含表達式和語句,並且可用於創建委托或表達式樹類型。
所有 Lambda 表達式都使用 Lambda 運算符 =>,該運算符讀為“goes to”。該 Lambda 運算符的左邊是輸入參數(如果有),右邊包含表達式或語句塊。Lambda 表達式 x => x * x 讀作“x goes to x times x”。
所有 Lambda 表達式都使用 Lambda 運算符 =>,該運算符讀為“goes to”。該 Lambda 運算符的左邊是輸入參數(如果有),右邊包含表達式或語句塊。Lambda 表達式 x => x * x 讀作“x goes to x times x”。
參考資料: http://msdn.microsoft.com/zh-cn/library/bb397687.aspx
Lambda表達式是C#3.0的新內容,如果您之前學習的C#2.0,不認識也就不奇怪了。
給您舉個例子。
例如,我定義一個委托:
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;
}
{
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();
}
其實這個寫法相當於
this.Loaded += new EventHandler(Form_Loaded);
private void Form_Loaded(object sender, EventArgs e) {
DiscoverKinectSensor();
}