在 Enrico Buonanno 所著的《函式式 C#》一書的第 16 頁中,給出了以下代碼:
namespace System
{
public delegate int Comparison<in T>(T x, T y);
}
var list = Enumerable.Range(1, 10).Select(i => i * 3).ToList();
list // => [3, 6, 9, 12, 15, 18, 21, 24, 27, 30]
Comparison<int> alphabetically = (l, r)
=> l.ToString().CompareTo(r.ToString());
list.Sort(alphabetically);
list // => [12, 15, 18, 21, 24, 27, 3, 30, 6, 9]
然而,當在 REPL 中執行時,這不會產生任何有用的東西。
error CS1503: Argument "1": Konvertierung von "Comparison<int>" in "System.Collections.Generic.IComparer<int>" nicht m?glich.
怎么了?
uj5u.com熱心網友回復:
Comparison是 .NET 中的現有委托,因此您無需宣告自己的委托。只需洗掉此宣告,List.Sort(Comparison<T>)就會呼叫相應的宣告 - 比較this和this。
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/431550.html
上一篇:如何僅選擇導航屬性的特定屬性
