2010-04-12 14 views
2

我在看這個例子:委託例如,從C#在深度混亂

List<Product> products = Product. GetSampleProducts() ; 
products.Sort(
    (first, second) => first.Name.CompareTo(second. Name) 
) ; 
foreach (Product product in products) 
{ 
    Console. WriteLine(product) ; 
} 

實際上就是所謂的API中有什麼功能,當你這樣做嗎?編譯器是否創建了實現IComparer接口的類?

我以爲代表們匿名方法 - 這似乎是被casuing混亂

回答

0

委託是不是匿名方法匿名接口實現。您的代碼似乎創建了Comparison委託給(first, second) => first.Name.CompareTo(second. Name)(這本身就是一個匿名方法)。

1

此處使用的方法是Sort,它將委託(指向方法的指針)作爲參數(在本例中爲Comparison<T>,它是一個帶有兩個返回整數的參數的函數)。

請勿混淆Sort需要IComparer<T>。對Java的控制,C#不支持內聯接口實現(或者其他所謂的)。