尝试在LINQPad中编译以下代码时:
void Main()
{
DriveInfo.GetDrives().Select(GetProviderName).Dump();
}
static string GetProviderName(DriveInfo drive)
{
// some irrelevant WMI code...
}
我收到以下错误:
如果我使用像
d => GetProviderName(d)
这样的lambda而不是方法组,它可以正常工作...我很惊讶,因为我确信编译器将能够从方法组中推断类型。范围内没有其他GetProviderName
方法,并且输入和输出类型均已明确定义,因此它应该可以隐式转换为Func<DriveInfo, string>
...不是吗? 最佳答案
这是C#4.0中已修复的编译器中的限制