gpt4 book ai didi

c# - 为标志类型枚举定义 "catchall"是否明智?

转载 作者:行者123 更新时间:2023-11-30 19:18:18 25 4
gpt4 key购买 nike

我有一个 enum 以下列方式声明(但有更多选项 - 大约 15 个左右)因为我想要一种简单的方法来定义所有选项而不必显式列出它们。

[Flags]
enum Options
{
Option1 = 1,
Option2 = 2,
Option3 = 4,
Option4 = 8,
AllOptions = 15
}

所以不用说

Options foo = Options.Option1 | Options.Option2 | Options.Option3 |... ad nauseum

我只能说

Options foo = Options.AllOptions;

这是明智的吗?或者是否有更好的方法可以为变量提供所有可用选项而无需明确列出它们?

最佳答案

Or is there perhaps a better way to give a variable all available options without explicitly having to list them?

好吧,你可以使用我的 Unconstrained Melody项目:

Options allOptions = Flags.GetUsedBits<Options>();

(然后您可以使用 Unconstrained Melody 执行各种其他操作。)

不过,就我个人而言,我会尽量避免对“全部”值进行硬编码 - 添加新值而忘记更新“全部”值太容易了。

(在这种情况下,我也会避免将其命名为 AllOptions - 它应该只是 All,以避免 Options.AllOptions 中的冗余>.)

如果您确实这样做了,请添加一个单元测试以确保您做对了:)

关于c# - 为标志类型枚举定义 "catchall"是否明智?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13257941/

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