C#中的代表示例深入理解

C#中的代表示例深入理解,c#,C#,我正在看这个例子: List<Product> products = Product. GetSampleProducts() ; products.Sort( (first, second) => first.Name.CompareTo(second. Name) ) ; foreach (Product product in products) { Console. WriteLine(product) ; } 列出产品=产品。GetSampleProd

我正在看这个例子:

List<Product> products = Product. GetSampleProducts() ;
products.Sort(
    (first, second) => first.Name.CompareTo(second. Name)
) ;
foreach (Product product in products)
{
    Console. WriteLine(product) ;
}
列出产品=产品。GetSampleProducts();
产品。分类(
(first,second)=>first.Name.CompareTo(second.Name)
) ;
foreach(产品中的产品)
{
控制台写入线(产品);
}
当您这样做时,API中实际调用了什么函数?编译器是否创建了一个类来实现IComparer接口


我认为委托是匿名方法-这里似乎是一个匿名接口实现,这会引起混淆

委托不是匿名方法。您的代码似乎创建了一个委托给
(first,second)=>first.Name.CompareTo(second.Name)
(它本身就是一个匿名方法)。

这里使用的方法是将委托(指向方法的指针)作为参数(在本例中,它是一个带有两个参数的函数,返回一个整数)


不要混淆哪一个需要。与Java相反,C#不支持内联接口实现(或任何调用)。

特别的重载是接受委托的重载