如果你有一個名爲界面 - 例如 - IInterface
,在C#這是完全合法的,像這樣寫代碼:目的默認的(IInterface)在C#
var i = default(IInterface);
但它總是返回null
。
允許這樣一個表達式具有唯一結果的目的是什麼?一個接口也可以通過數字或結構類來實現,所以默認的null
不可用。 那麼,除了允許default(IInterface)
在語言中選擇的原因是什麼?
如果你有一個名爲界面 - 例如 - IInterface
,在C#這是完全合法的,像這樣寫代碼:目的默認的(IInterface)在C#
var i = default(IInterface);
但它總是返回null
。
允許這樣一個表達式具有唯一結果的目的是什麼?一個接口也可以通過數字或結構類來實現,所以默認的null
不可用。 那麼,除了允許default(IInterface)
在語言中選擇的原因是什麼?
default(T)
運算符是爲泛型類型引入的。
如果T
是一個類型參數,它將爲參考類型返回null
或值類型爲new T()
。
一旦運營商存在,沒有理由限制它只能使用類型參數,所以它適用於所有類型。
我會深入的部分是「沒有理由限制」......因爲您可以使每個功能更加靈活和更寬廣,但是它在開發,維護,學習曲線等方面的成本。 「沒有理由限制」是一個基於意見的_negative_參數,我正在尋找一些_positive_參數來允許這樣的語法。 –
接口是引用類型:[Structs,Interfaces and Boxing](http://stackoverflow.com/questions/3032750/structs-interfaces-and-boxing)。 –
通用代碼中的關鍵。當需要轉換使用Nothing的VB.NET代碼時非常方便。或者,如果您有IntPtr類型的可選參數,則不能使用IntPtr.Zero。 –