c ++中的枚举类-replacement- in c#

Sil*_*ght 4 c# c++ enums class

看看这些c ++代码:

enum class Flag : int32 {
    f_unread = (1 << 0),
    f_out = (1 << 1),
    f_mentioned = (1 << 4),

    MAX_FIELD = (1 << 4),
};
Run Code Online (Sandbox Code Playgroud)

c#中这些代码的隐蔽是什么?

Mur*_*oft 5

使用有形.似乎它并没有太大的不同.

[Flags]
public enum Flag : int
{
    f_unread = (1 << 0),
    f_out = (1 << 1),
    f_mentioned = (1 << 4),

    MAX_FIELD = (1 << 4),
}
Run Code Online (Sandbox Code Playgroud)

在c#中,要enum用作标志操作的位字段,应该添加FlagsAttribute,添加[FlagsAttribute][Flags]之前添加enum.

  • @MoonLight不,枚举的默认底层类型是`int`,所以没有必要指定它,除非你想要`short`或`long`等实际上,对于`[Flags]`枚举,你有时可能想要如果在任何枚举值中设置了最高位,请考虑使用`uint`. (3认同)