枚举类型允许为 null 还是定义一个 None 为枚举值更方便维护?这两种方案在实际场景中效果是一致的吗?存入数据库的话 nullable 似乎会占用更大的空间,哪个查询效率更高?

79 天前
 drymonfidelia
1303 次点击
所在节点    程序员
7 条回复
liuliuliuliu
79 天前
那个啥,你得先说语言,很多语言的枚举类型就不允许为 null
drymonfidelia
79 天前
@nikenidage1 我用过的几个语言好像都可以为 null ,像 C#
geelaw
79 天前
@drymonfidelia #2 那你可能要精进一下 C#,在 C# 里面枚举的取值范围就是底层整数类型的范围,所以不存在 null 。

设 T : struct, Enum 那么 T? 即 Nullable<T> 当然可以取 null ,另外 obejct 、ValueType 、IComparable 、IConvertible 、IFormattable 、ISpanFormattable 类型的变量都可以用来存储 boxed enum 的引用或 null 。
msg7086
78 天前
null 一般指的是值缺失。None 是值存在但语义为空。
xuld
78 天前
快速回答:无论什么时候,都首选定义一个 None
如果可为 null ,则表示需要一个指针位来存储枚举,增加复杂度
h1298841903
78 天前
定义 None 、UNINIT (未初始化)、IDLE (闲置状态),都可以代表 null ,总之,应该有个确定的状态,这样你画状态转换图的时候,也比较好画。
zizon
78 天前
既然你说到维护了,那么如果语法上允许为 null,那么就一定会有人用 null.

至于效率的问题,不到有问题的时候都不是问题.
出问题的时候无论怎样都是设计问题.

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/1098639

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX