2010-04-16 170 views

回答

4

按道理None可能是一個有效的選擇(取決於你列舉的意思) - >可能在開關情況下,單獨的分支(可以說是 - 並不總是一個None選項使培訓就業處)

對於具有None選項a Nullable<Mode>變量:我會爲None進行一致性:如果您有3個有效的選項,None就是其中之一,爲什麼要區別對待它?

如果您選擇或不具有None選項,則應始終將枚舉值映射爲0(默認選項)。由Hans Kesting提供的link提供了一個關於將值映射爲0的好方法:

未初始化枚舉的默認值與其他值類型一樣爲零。非標誌歸屬枚舉應定義一個值爲零的成員,以便默認值爲枚舉的有效值。如果合適,請將該成員命名爲「無」。否則,將零分配給最常用的成員。請注意,如果第一個枚舉成員的值未在聲明中設置,則其默認值爲零。

+0

我將你的答案標記爲有用。 – 2010-04-16 12:01:29

11

沒有對[Flags]枚舉很重要,應該有0值,否則...可疑。 A Nullable<Mode>也足夠了。但是None可能需要它們的序列化或ORM層(它可能映射到期望的字符串/整型值等)。或者它可能只是簡化了API。

4

由於官方原因,需要使用代碼分析規則,請參閱http://msdn.microsoft.com/en-us/library/ms182149(VS.100).aspx

+0

(重新非標誌枚舉)pah ...如果「0」不是我的枚舉的有效情況,我沒有一個。我會自己檢查有效值,ta。我需要檢查**沒有定義的每個其他**值:爲什麼0應該是任何不同,因爲它是默認值? 1124521 *只是*無效(推測)。 – 2010-04-16 06:27:32