尝试在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中已修复的编译器中的限制

09-07 05:40