我有以下示例代碼(僅用於C#3.5學習目的!)。僅針對lambda表達式的隱式類型推斷?爲什麼?困惑!
我正在調用接受IEnumerable和排序函數的Sort函數。如果我使用lambda表達式(情況A)調用它,編譯器可以派生返回類型TResult,但是當我通過func SortInt(情況B)時,編譯器會引發錯誤!
我無法理解爲什麼編譯器不能在第二種情況下派生TResult!我似乎傳遞了完全相同的信息。還是那不準確?
請幫忙!
int[] intArray = { 1, 3, 2, 5, 1 };
IEnumerable<int> intArray2 = Sort(intArray, x => SortInt(x)); // <= CASE A - OK !
IEnumerable<int> nextIntArray = Sort(intArray, SortInt); // <= CASE B - Compile Error: Cannot Infer Type !
public static IEnumerable<TResult> Sort<T, TResult>(IEnumerable<T> toBeSorted,
Func<IEnumerable<T>, IEnumerable<TResult>> sortFunc)
{
return sortFunc(toBeSorted);
}
public static IEnumerable<int> SortInt(IEnumerable<int> array)
{
return array.OrderByDescending(x => x);
}
你的名字就像是印度人 – 2009-11-09 10:28:27