2010-04-16 172 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