我目前正在讀的深度第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