为什么以下情况属实:
var foo = new KeyValuePair(3,4); //doesn't compile!
var boo = new KeyValuePair<int,int>(3,4); //works fine!
我认为这两行都是合法的,因为类型可以(应该)从参数中推断出来。解释
答案 0 :(得分:3)
简单地说,类型推断仅适用于方法,而不适用于构造函数。原因很简单,构造函数不接受类型参数,只有类型和方法。也就是说,KeyValuePair是一个未定义的类型。请记住,例如,可以使用以下类型:Action
,Action<T>
,Action<T1, T2>
等。