我注意到一些枚举具有“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