回答
其他回答是錯誤的。這沒有任何技術上的原因。類型可以從構造函數調用中推斷出來,因爲它可以從「普通」方法調用中獲得。
請參考由埃裏克利珀(前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. 泛型類型的構造函數的參數
- 11. winsdor註冊一個泛型類型構造函數的參數
- 12. 使用泛型類型的參數化構造函數基類
- 13. 將參數傳遞給泛型類型VB.Net中的新構造函數泛型
- 14. C#5.0泛型:參數類型推斷
- 15. 讓非泛型類在構造函數中採用泛型參數
- 16. 泛型參數的構造器需求?
- 17. 設置使用泛型的接口的構造函數參數
- 18. 泛型類上的構造函數具有無效參數
- 19. 的Java:抽象泛型類構造函數的參數
- 20. Java泛型複製構造函數
- 21. Typescript定義泛型構造函數
- 22. Java泛型調用構造函數
- 23. 泛型默認構造函數Java
- 24. F#類與泛型:'構造函數不推薦'錯誤
- 25. 具有非泛型構造函數的泛型F#類型
- 26. 如何將參數傳遞給在C#.NET泛型類的構造函數?
- 27. 在C中有零個或多個參數的泛型構造函數#
- 28. Variadic模板類:基於構造函數參數推斷類型
- 29. 將泛型數組構造
- 30. C++數組構造函數的參數
你是對的,很好看。 – Gleno 2011-03-25 10:28:39