我有以下示例代码(仅用于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