一小時前,我問了一個問題:how can I write an extension method for Enum?-Nullable<Enum>
出奇我得到的回答告訴我,我可以寫擴展方法爲Enum
,它可以用於所有枚舉和可空枚舉。如何可爲空<T>使用它的基礎值類型的擴展方法
很酷,它工作,但如何?
如果我理解正確,所有枚舉都從Enum
派生,所以爲什麼我可以在每個枚舉中使用這個擴展方法。
但是...例如,ItemType?
枚舉不是枚舉,它是Nullable<ItemType>
,它不是從ItemType
和Enum
派生而來的。
就像List<DataReader>
不從DataReader
獲得,因此不能使用DataReader
方法,雖然DataReader
是它的泛型類型。
我知道Nullable<T>
類型有很多「巫術」和語法糖,這是其中之一嗎?
這只是一個步驟,但與List案例不同,這裏是從Nullable到T的[顯式轉換](http://msdn.microsoft.com/zh-cn/library/ms131345.aspx) ,這必須幫助。 –
Rawling
'我知道Nullable類型有很多「voodoo」和語法糖,這是他們中的一員嗎?'我知道這是所有用戶定義的運算符重載的情況。編譯器將爲每個操作數的可空/不可空的版本的所有排列創建操作符的版本。它必須爲擴展方法做同樣的事情,但我無法在語言規範中找到它。 –
Servy