回答
其他回答是錯誤的。這沒有任何技術上的原因。類型可以從構造函數調用中推斷出來,因爲它可以從「普通」方法調用中獲得。
請參考由埃裏克利珀(前C#編譯器的開發者)的回答:Why can't the C# constructor infer type?
考慮以下幾點:
public class Foo<T>
{
public Foo(T value) { }
}
public class Foo
{
public Foo(int value) { }
}
// suppose type parameter inference in constructor calls
var x = new Foo(5); // which one?
因爲你可以用相同的名字聲明兩個類型,一個通用的,和一個非通用的,你需要將它們之間的明確決定在構造函數調用中。強制類型參數是明確的是消除任何可能的歧義的一種方法。該語言可能有一些解決方案規則,但這項功能的好處足以將預算用於實施它。
很好的例子。但是如果我們有兩個方法重載:泛型而不是泛型?我在這裏看不出有什麼大的差別 – SiberianGuy 2011-03-25 09:58:09
如果他們是方法 - 非通用方法,將會被調用。 – Jon 2011-03-25 09:59:37
喬恩是正確的。從這個角度來看,構造函數調用不是別的方法調用,而是可以應用相同的推理規則。 – 2011-03-25 10:24:47
- 1. 泛型和參數化構造函數
- 2. 泛型無參數構造函數
- 3. C# - 構造函數中的類型參數 - 沒有泛型
- 4. 構造與泛型參數
- 5. C#泛型拷貝構造函數
- 6. C#泛型靜態構造函數
- 7. 繼承的泛型構造函數C#
- 8. 在C#中有參數約束的泛型構造函數嗎?
- 9. 泛型函數參數類型推斷
- 10. winsdor註冊一個泛型類型構造函數的參數
- 11. 使用泛型類型的參數化構造函數基類
- 12. 讓非泛型類在構造函數中採用泛型參數
- 13. 泛型參數的構造器需求?
- 14. 泛型默認構造函數Java
- 15. Java泛型調用構造函數
- 16. Typescript定義泛型構造函數
- 17. F#類與泛型:'構造函數不推薦'錯誤
- 18. 具有非泛型構造函數的泛型F#類型
- 19. 在C中有零個或多個參數的泛型構造函數#
- 20. C++數組構造函數的參數
- 21. 將泛型數組構造
- 22. 從C#中的參數化構造函數調用無參數構造函數?
- 23. 從泛型類泛型類中缺少構造函數
- 24. 是否支持非泛型類中的泛型構造函數?
- 25. 無參數構造函數調用2參數構造函數
- 26. 沒有參數的構造函數或參數構造函數
- 27. C#構造函數參數傳遞
- 28. C++參數化構造函數
- 29. C++ Move構造函數參數
- 30. 的Java泛型 - 用於構造函數調用顯式類型參數
你是對的,很好看。 – Gleno 2011-03-25 10:28:39