定义标志的结构

时间:2013-09-03 11:40:11

标签: c#

我想定义包含八个标志的结构。是否可以使用字节类型而不是8个布尔字段?我想有这样的东西

struct mystruct
{
  byte first:1;
  byte second:1;
  ...
}

我希望二进制表示给我标志值。

如果我有一些值应该超过1位,那该怎么办? G。 2或4

2 个答案:

答案 0 :(得分:4)

是的,你可以不使用结构但使用枚举,如下所示:

[Flags]
public enum MyFlags
{
    First = 1,
    Second = 2,
    Third = 4,
    Fourth = 8
}

答案 1 :(得分:3)

你好卧底它将转换为字节看起来:

    [FlagsAttribute]
    public enum mystruct: byte
    {
        first= 1,
        second =2
    }

我还要为你发布IL代码吗?

更多信息: What does the [Flags] Enum Attribute mean in C#?

另外,Flags只是FlagsAttribute的缩写。