C# 覆盖枚举

C# 覆盖枚举,c#,enums,C#,Enums,我有一套枚举 public enum enums { enum1, enum2, enum3, enum4, enum5 } 在另一个类中,我想要两个对象: 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 有人对我如何做到这一点有想法吗?使

我有一套枚举

public enum enums
{
    enum1,
    enum2,
    enum3,
    enum4,
    enum5
}
在另一个类中,我想要两个对象:

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

有人对我如何做到这一点有想法吗?

使用
标志
属性,您可以指定更多值:

[Flags]
public enum enums
{
    enum1 = 1,
    enum2 = 2,
    enum3 = 4,
    enum4 = 8,
    enum5 = 16
}
下面是一篇解释如何使用它的好帖子:

更多编辑:

那么您的代码应该如下所示:

enums object1 = enums.enum1 | enums.enum2;
enums object2 = enums.enum3 | enums.enum4 | enums.enum5;
要检查您的
object1
是否包含给定标志:

if ((object1 & enums.enum1) == enums.enum1) 
{
    //object1 contains enums.enum1 flag
}

您能解释一下为什么您想要一个单一的枚举,但只想使用其中的一半吗?您希望对象只能保存这些值(限制),还是希望它们一次包含所有指示的值?有一个区别,第一个不能用C完成,这与重写有什么关系?为什么人们投票以“不是建设性的”而不是“不是一个真正的问题”来结束呢?这个问题是压倒一切的,因为我认为我将用新的blabl()做一些事情。{…,…};他们的观点没有建设性,因为我面对这一点,不确定该走哪条路。也许对你来说,这不是一个真正的问题,但对我来说,这是一个问题。顺便问一下,你为什么要费心回答呢?你需要使用位OR运算符
var object2=enum3 | enum4 | enum5
从.NET 4.0开始,您还可以使用
Enum.HasFlag()
方法,而不是按位AND运算符。@alexw它仅在.NET 4及更高版本中受支持,无法判断哪个OP使用。这并不能回答OP的问题,因为
object2
使用
object2
没有限制。谢谢gzaxx,这正是我想要的。