【发布时间】:2013-02-07 19:58:09
【问题描述】:
我有时会看到这样的enums:
public enum Color {
None, Black, Red, Blue
}
代码如下:
Color color;
...
if (color == Color.None) ...
我更喜欢使用可为空的枚举并将其编码如下:
public enum Color {
Black, Red, Blue
}
...
Color? color;
...
if (color == null) ...
哪种风格更受欢迎?
【问题讨论】:
-
None超过null。None让人猜不透。 -
“我更喜欢使用可以为空的枚举”......不是一个聪明人,但听起来你回答了你自己的问题。答案取决于枚举背后的意图。如果它有时应该为 NULL,则使其可为空。如果它永远不应为 NULL,请添加“无”选项。
-
通常是第一个。它使调试更容易,而且
null与Color.None不同。 -
@JoelFan 但是将
color设置为null等于说不适用,设置为Color.None则说此时没有颜色。跨度> -
@SebastianMach 对于可怕的 Null Ref 异常,我倾向于避免使用空值。 Null 在编程中有其特殊的位置,但我倾向于尽可能减少它们并使用 Null Object 模式。我想这是品味和选择的问题。
标签: c# coding-style enums