我注意到一些枚舉具有「None」作爲枚舉成員。爲什麼有些人使用「無」作爲枚舉成員?
比如我是什麼意思
enum Mode
{
Mode1 = 1,
Mode2 = 2,
Mode3 = 3,
None = 4
}
他們爲什麼使用它?在什麼情況下,沒有成員的解決方案更可取(不太可取)?
我注意到一些枚舉具有「None」作爲枚舉成員。爲什麼有些人使用「無」作爲枚舉成員?
比如我是什麼意思
enum Mode
{
Mode1 = 1,
Mode2 = 2,
Mode3 = 3,
None = 4
}
他們爲什麼使用它?在什麼情況下,沒有成員的解決方案更可取(不太可取)?
按道理None
可能是一個有效的選擇(取決於你列舉的意思) - >可能在開關情況下,單獨的分支(可以說是 - 並不總是一個None
選項使培訓就業處)
對於具有None
選項a Nullable<Mode>
變量:我會爲None
進行一致性:如果您有3個有效的選項,None
就是其中之一,爲什麼要區別對待它?
如果您選擇或不具有None
選項,則應始終將枚舉值映射爲0(默認選項)。由Hans Kesting提供的link提供了一個關於將值映射爲0的好方法:
未初始化枚舉的默認值與其他值類型一樣爲零。非標誌歸屬枚舉應定義一個值爲零的成員,以便默認值爲枚舉的有效值。如果合適,請將該成員命名爲「無」。否則,將零分配給最常用的成員。請注意,如果第一個枚舉成員的值未在聲明中設置,則其默認值爲零。
沒有對[Flags]
枚舉很重要,應該有0值,否則...可疑。 A Nullable<Mode>
也足夠了。但是None
可能需要它們的序列化或ORM層(它可能映射到期望的字符串/整型值等)。或者它可能只是簡化了API。
由於官方原因,需要使用代碼分析規則,請參閱http://msdn.microsoft.com/en-us/library/ms182149(VS.100).aspx。
(重新非標誌枚舉)pah ...如果「0」不是我的枚舉的有效情況,我沒有一個。我會自己檢查有效值,ta。我需要檢查**沒有定義的每個其他**值:爲什麼0應該是任何不同,因爲它是默認值? 1124521 *只是*無效(推測)。 – 2010-04-16 06:27:32
我將你的答案標記爲有用。 – 2010-04-16 12:01:29