可以在Flags枚举中添加"All"项吗?

mag*_*tic 4 .net c# enums enum-flags

如果我有一个可以同时出现的多个值的枚举,我创建一个Flags枚举:

[Flags]
public enum Foo
{
    None = 0,
    A = 1,
    B = 2,
    C = 4,
    D = 8
}
Run Code Online (Sandbox Code Playgroud)

如果我现在想要传递每个值都设置的事实,我将不得不做这样的事情:

Bar bar = new Bar(Foo.A | Foo.B | Foo.C | Foo.D);
Run Code Online (Sandbox Code Playgroud)

添加额外元素All会被视为不良做法/有害/亵渎吗?

    All = 15
Run Code Online (Sandbox Code Playgroud)

当存在大量值并且将它们全部传递时,这将节省一些空间和时间是常见的情况.

据我所知,标志枚举(=位域)的机制,这应该工作.我不知道有任何副作用或其他原因你不应该这样做吗?

Car*_*tte 8

你可以做到这一点.但也许你不应该使用值15,但是

All = A | B | C | D
Run Code Online (Sandbox Code Playgroud)

  • .ToString()也很好地支持这一点. (3认同)