2010-09-24 66 views
4

可能重复:
Why can't the C# constructor infer type?通用KeyValuePair和类型推断

为什么以下情况:

var foo = new KeyValuePair(3,4); //doesn't compile! 
var boo = new KeyValuePair<int,int>(3,4); //works fine! 

我想这两条线将是合法的,因为类型可以(应该)从参数中推断出来。说明?

+0

这也让我难住了。我能想到的唯一的事情就是它是一个构造函数而不是常规方法,但我不明白为什么这会产生任何影响。 – 2010-09-24 02:50:29

+0

@Ben,yup,dup。你引用的问题由Eric Lippert解答,所以我会按照他的回答。 ;) – 2010-09-24 02:53:13

+0

该问题与其他问题的链接在哪里重复? – jgauffin 2010-09-24 06:54:02

回答

3

简而言之,键入推论只有适用于方法,不适用于构造函数。原因很简单,构造函数不接受类型参数,只有类型和方法。就是说,KeyValuePair是一个未定义的类型。请记住,例如,有可能具有以下类型:ActionAction<T>Action<T1, T2>等。