• 请不要在回答技术问题时复制粘贴 AI 生成的内容
drymonfidelia
V2EX  ›  程序员

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

  •  
  •   drymonfidelia · Dec 19, 2024 · 2262 views
    This topic created in 684 days ago, the information mentioned may be changed or developed.
    7 replies  •  2024-12-19 12:46:09 +08:00
    liuliuliuliu
    liuliuliuliu
    Dec 19, 2024
    1
    那个啥,你得先说语言,很多语言的枚举类型就不允许为 null
    drymonfidelia
    drymonfidelia
    OP
    Dec 19, 2024
    2
    @nikenidage1 我用过的几个语言好像都可以为 null ,像 C#
    geelaw
    geelaw
    Dec 19, 2024 via iPhone❤️2
    3
    @drymonfidelia #2 那你可能要精进一下 C#,在 C# 里面枚举的取值范围就是底层整数类型的范围,所以不存在 null 。

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

    至于效率的问题,不到有问题的时候都不是问题.
    出问题的时候无论怎样都是设计问题.
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Privacy   ·   Solana   ·   4596 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 39ms · UTC 00:21 · PVG 08:21 · LAX 16:21 · JFK 19:21
    ♥ Do have faith in what you're doing.