代码之家  ›  专栏  ›  技术社区  ›  Thomas Levesque

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

  •  11
  • Thomas Levesque  · 技术社区  · 16 年前

    尝试在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) GetProviderName 方法,并且输入和输出类型都有明确的定义,因此它应该隐式地转换为 Func<DriveInfo, string> ... 不是吗?

    1 回复  |  直到 16 年前
        1
  •  8
  •   SLaks    16 年前

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