【问题标题】:Why generic type inference doesn't work in that case?为什么泛型类型推断在这种情况下不起作用?
【发布时间】:2010-05-26 14:13:11
【问题描述】:

尝试在 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>...不应该吗?

【问题讨论】:

    标签: c# linq type-inference


    【解决方案1】:

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

    【讨论】:

    • 啊,我知道我以前见过它工作...上面的测试是在 C# 3.0 中完成的。你有任何相关的参考链接吗?
    猜你喜欢
    • 2011-04-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-07-22
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多