【发布时间】:2015-09-04 09:52:00
【问题描述】:
假设我正在检测程序的选项。
如果程序版本号低于某个限制,这些选项可以启用、禁用或不可用。
如果该选项不可用,我需要将其设置为 null。
现在,我有两条路要走。
第一个:
bool? option;
使用可为空的布尔值使我能够将我的选项设置为真、假或空。这会很好用并满足我的要求。
不过,我也可以使用方式二:
enum{
unavailable,
enabled,
disabled
}
或类似的东西。
现在,如果我可以选择,在内存使用、可访问性等方面哪个更好?
我会说可以为空的布尔值更容易使用,但我看到很多人对可空值非常消极,更喜欢枚举方式。
谁能帮我解释一下?
【问题讨论】:
-
这是一个见仁见智的问题。 TBH 我可能会使用枚举,因为具有 3 个值的布尔值似乎是错误的。此外,由于某些阶段的错误,布尔值可能未设置。枚举还会为增加可能值的数量留出空间,而无需重写应用程序。
-
最近,很多人对
null的价值观提出了批评。其中大部分是关于null的未定义语义:null没有一致或自记录的语义;它可以表示“我不知道”、“我不在乎”、“那不相关”、“发生错误”或其他一百万件事。因此,为了清楚起见,您可能希望避免使用nulls。