gpt4 book ai didi

c# - 枚举的标志和非标志变体

转载 作者:太空狗 更新时间:2023-10-30 00:20:48 24 4
gpt4 key购买 nike

假设我在标志和非标志变体中都需要一个枚举。

  • 选项 1:我可以复制所有内容:

    enum Color { Red, Blue, Green }

    [Flags]
    enum Colors {
    None = 0,
    Red = 1,
    Blue = 2,
    Green = 4
    }

    // use cases
    Color currentColor;
    Colors supportedColors;
  • 选项 2:我可以对所有内容使用 Flags 变体:

    Colors currentColor; // ugly, since neither "None" nor "Red | Blue" should be valid

我不喜欢其中任何一个:在选项 1 中,Color.RedColors.Red 完全无关,这可能需要绑定(bind)代码。此外,我必须使两个枚举保持同步。选项 2 的缺点是显而易见的。我真正想要的是

enum Colors = Flag set of Color;

是否有针对此要求的更优雅的解决方案?

最佳答案

我会简单地对所有内容使用 [Flags] 版本,并简单地确保在几个地方它只是一个值。无论哪种方式,您需要都这样做,因为即使没有[Flags],以下内容也是有效的:

var flags = (Color)47; // why not

所以您需要检查 Color 是否是您所期望的无论如何[Flags] 只会帮助序列化/解析。

关于c# - 枚举的标志和非标志变体,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9016453/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com