我目前正在读的深度第2版乔恩斯基特的C#分辨率和以下问题来到我的脑海:LAMBDA委托
怎么样编译器能够在下面的例子中list.Sort(Comparison<T>)
和list.Sort(MyComparison<T>)
之间做出选择:
// MyComparison has the same signature as Comparison<in T>
public delegate int MyComparison<in T>(T x, T y);
public class MyList<T> : List<T>
{
// Sort is like Sort(Comparison<T>) except it takes a MyComparison<T> in parameter
public int Sort(MyComparison<T> comparison)
{
Console.WriteLine("Sort MyComparison<T>");
return -1;
}
}
MyList<Product> list = new MyList<Product>();
list.Sort((product1, product2) => product1.Name.CompareTo(product2.Name));
// Equivalent to
list.Sort(new MyComparison<Product>((product1, product2) => product1.Name.CompareTo(product2.Name)));
// But not equivalent to...
list.Sort(new Comparison<Product>((product1, product2) => product1.Name.CompareTo(product2.Name)));
在此先感谢
非常感谢您的帮助。 (我喜欢这本书,非常感谢你花时间更新它)。 – 2010-11-01 15:07:40