2011-03-01 67 views
0

我似乎是有問題的通信下面lambda表達式的確切含義與小理解這樣的表達式的顯影劑(其中列表是一個.NET通用列表):問題的拉姆達的通信表達式

list.Sort((x, y) => x.Name.CompareTo(y.Name)); 

您如何向其他開發人員解釋此聲明?你會告訴他什麼?

編輯:我自從用lambda表達式取代了Linq。

回答

2

宣讀的聲明如下,意思很清楚 -

Sort the list, such that for all x & y in the list, x.Name is compared to y.Name 
2

我下面會說:

  • 這不是LINQ。 Sort處於List<T>類中定義的方法
  • (x, y) => x.Name.CompareTo(y.Name)lambda表達式這是declading委託到匿名方法的短手風格。將=>左側的部分視爲方法簽名,將右側的部分視爲方法體。方法簽名不需要明確輸入參數的類型;編譯器根據List<T>的類型進行計算。
  • Sort將調用委託人爲列表中的對象重複引用的方法,以確定排序順序
  • 在這種特殊情況下,它將比較對象的Name屬性。
  • 如果有x傳遞給排序方法,代碼將拋出NullReferenceException,其中Namenull
+0

謝謝,我已經編輯澄清,這不是LINQ的這樣 – CarneyCode 2011-03-01 06:31:26

1

Sort()方法接受一個委託(方法),它接受兩個參數並返回一個整數,指定第一個參數與第二個參數的比較方式。該代表是從具有運算符=>的lambda表達式創建的,該運算符的一側具有參數(x,y),另一側具有返回值的表達式。

+0

感謝的問題,我已經編輯以澄清問題這不是Linq本身 – CarneyCode 2011-03-01 06:30:52