2010-09-24 68 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>等。