覆盖枚举

Jac*_*k M 2 c# enums

我有一套枚举

public enum enums
{
    enum1,
    enum2,
    enum3,
    enum4,
    enum5
}
Run Code Online (Sandbox Code Playgroud)

在另一个类中我想要两个对象:

var object1 = new enums();//Here I want an enum of enum1,enum2
var object2 = new enums();//Here I want an enum of enum3,enum4,enum5
Run Code Online (Sandbox Code Playgroud)

是否有人知道如何做到这一点?

gza*_*axx 7

使用Flags属性,您可以分配更多值:

[Flags]
public enum enums
{
    enum1 = 1,
    enum2 = 2,
    enum3 = 4,
    enum4 = 8,
    enum5 = 16
}
Run Code Online (Sandbox Code Playgroud)

这里有很好的帖子解释如何使用它:https://stackoverflow.com/a/8480/2043144

更多编辑:

那么你的代码看起来应该是这样的:

enums object1 = enums.enum1 | enums.enum2;
enums object2 = enums.enum3 | enums.enum4 | enums.enum5;
Run Code Online (Sandbox Code Playgroud)

检查你的object1包含标志:

if ((object1 & enums.enum1) == enums.enum1) 
{
    //object1 contains enums.enum1 flag
}
Run Code Online (Sandbox Code Playgroud)

  • 从.NET 4.0开始,您还可以使用`Enum.HasFlag()`方法而不是按位AND运算符. (4认同)