4
大家都知道,我們不可能寫出這樣的代碼在當前版本的C#:爲什麼在C#中的泛型參數沒有構造函數參數約束?
public class A {
public static void Method<T>() where T : new(string, string) {
var x = new T("foo", "bar");
}
}
,但我們可以用new()
約束來強制執行T
具有公共參數的構造函數,然後我們可以創建T
使用new T()
表達式的新實例。
關於各種解決方法,SO上有很多答案,但其中沒有解釋爲什麼語言設計者沒有實現這樣的功能。從SO上的問題數量來看,它看起來在閱讀世界應用程序時會很有用。
爲什麼這個特性沒有在C#中實現,是否有機會在下一版本的語言中添加它?
準確地向誰解決這個問題? 「爲什麼」這樣的問題對於SO來說是不合適的。 –
它有點違背了通用的目的,因爲現在你的通用代碼必須知道類型太多了。出於同樣的原因,在接口中不能有構造函數,構造函數是實現細節。 – CodeCaster
[*我一直在問「爲什麼C#不實現特性X?」。答案總是相同的:因爲沒有人設計,指定,實施,測試,記錄和發佈該功能。*](https://blogs.msdn.microsoft.com/ericlippert/2009/06/22/why- doesnt-c-implement -top-level-methods) – PetSerAl