为什么泛型类型推断在这种情况下不起作用?

时间:2010-05-26 14:13:11

标签: c# linq type-inference

尝试在LINQPad中编译以下代码时:

void Main()
{
    DriveInfo.GetDrives().Select(GetProviderName).Dump();
}

static string GetProviderName(DriveInfo drive)
{
    // some irrelevant WMI code...
}

我收到以下错误:

  

无法从用法推断出方法'System.Linq.Enumerable.Select(System.Collections.Generic.IEnumerable,System.Func)'的类型参数。尝试明确指定类型参数。

如果我使用像d => GetProviderName(d)这样的lambda而不是方法组,它运行正常...我很惊讶,因为我确信编译器能够从方法组中推断出类型。范围内没有其他GetProviderName方法,输入和输出类型已明确定义,因此它应隐式转换为Func<DriveInfo, string> ...不应该吗?

1 个答案:

答案 0 :(得分:8)

这是在C#4.0中修复的编译器的限制