C#泛型——当简单方法不';T

C#泛型——当简单方法不';T,c#,generics,type-inference,C#,Generics,Type Inference,我很难理解为什么C#编译器可以推断 Array.ConvertAll(new int[1], i => Convert.ToDouble(i)); 但不是为了 Array.ConvertAll(new int[1], Convert.ToDouble); 而前者似乎比后者更为复杂 有人能解释一下为什么会发生这种情况吗?这篇(存档的)博文很好地介绍了这个问题: 总之,据我所知(这种联系是否会消失);在C#3.0中,这是一个有意识的设计决策,因为它不适合对方法组执行类型推断(您的第二个示例

我很难理解为什么C#编译器可以推断

Array.ConvertAll(new int[1], i => Convert.ToDouble(i));
但不是为了

Array.ConvertAll(new int[1], Convert.ToDouble);
而前者似乎比后者更为复杂


有人能解释一下为什么会发生这种情况吗?

这篇(存档的)博文很好地介绍了这个问题:

总之,据我所知(这种联系是否会消失);在C#3.0中,这是一个有意识的设计决策,因为它不适合对方法组执行类型推断(您的第二个示例)

我想很多人不喜欢这样,所以这个问题在C#4.0上得到了解决(从VisualStudio2010开始)


“在C#4.0中,当方法组可以明确地与从委托导出的一组完全固定的参数类型相关联时,返回类型推断对方法组参数起作用。一旦与方法组关联的参数类型已知,则重载解析可以明确地确定方法组中哪个方法是与委托形式参数关联的方法;然后,我们可以从特定方法到委托返回类型进行返回类型推断。“

在等乔恩·斯基特。我没有跟上——这两个版本对我来说都很好。我遗漏了什么吗?@KirkWoll等人-框架版本不相关,是编译器版本产生了问题。所以这个问题只会出现在VS2008 AFAIK中。而且-我想你们会在这篇文章中找到你们的答案:@RJLohan:的确,请把它作为一个答案发布!(哈哈,埃里克在我发帖之前就回答了我的问题……)