CLR - 声明具有 "Flags" 属性的枚举
CLR - Declare enum with "Flags" attribute
我在 CLR/CLI 中有以下枚举:
public enum class Days
{
Sunday,
Monday,
Tuesday,
Wednesday,
Thursday,
Friday,
Saturday
};
在 C# 中,如果我想创建所选枚举的组合,我过去常常在枚举声明之前添加 [Flags]
属性。
C++ CLR 中是否存在与此类似的内容?
C#中的FlagsAttribute
只是表示枚举可以当做位域。
真正重要的是您适当地定义枚举值,以便可以对它们执行 AND、OR、NOT 和 XOR 按位运算,即您应该为每个枚举值分配 2 的下一个更大的幂:
public enum class Days
{
Sunday = 1,
Monday = 2,
Tuesday = 4,
Wednesday = 8,
Thursday = 16,
Friday = 32,
Saturday = 64
};
[Flags]
不会自动使枚举值成为 2 的幂。
What does the [Flags] Enum Attribute mean in C#?
您可以像这样在 C++/CLI 中使用标志属性:
[System::Flags]
public enum class Days : int
{
Sunday = 1,
Monday = 2,
Tuesday = 4,
Wednesday = 8,
Thursday = 16,
Friday = 32,
Saturday = 64
};
[Flags] 不会自动使枚举值成为 2 的幂。但是一些静态代码分析工具可能需要它:
我在 CLR/CLI 中有以下枚举:
public enum class Days
{
Sunday,
Monday,
Tuesday,
Wednesday,
Thursday,
Friday,
Saturday
};
在 C# 中,如果我想创建所选枚举的组合,我过去常常在枚举声明之前添加 [Flags]
属性。
C++ CLR 中是否存在与此类似的内容?
C#中的FlagsAttribute
只是表示枚举可以当做位域。
真正重要的是您适当地定义枚举值,以便可以对它们执行 AND、OR、NOT 和 XOR 按位运算,即您应该为每个枚举值分配 2 的下一个更大的幂:
public enum class Days
{
Sunday = 1,
Monday = 2,
Tuesday = 4,
Wednesday = 8,
Thursday = 16,
Friday = 32,
Saturday = 64
};
[Flags]
不会自动使枚举值成为 2 的幂。
What does the [Flags] Enum Attribute mean in C#?
您可以像这样在 C++/CLI 中使用标志属性:
[System::Flags]
public enum class Days : int
{
Sunday = 1,
Monday = 2,
Tuesday = 4,
Wednesday = 8,
Thursday = 16,
Friday = 32,
Saturday = 64
};
[Flags] 不会自动使枚举值成为 2 的幂。但是一些静态代码分析工具可能需要它: