1

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

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

我想要二进制表示给我标志值。

如果我有一些值应该超过 1 位,例如 2 或 4

4

2 回答 2

4

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

[Flags]
public enum MyFlags
{
    First = 1,
    Second = 2,
    Third = 4,
    Fourth = 8
}
于 2013-09-03T11:43:16.080 回答
3

嗨卧底它将被转换为字节看这个:

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

我也可以为您发布 IL 代码吗?

更多信息: C# 中的 [Flags] 枚举属性是什么意思?

顺便说一下,Flags 只是 FlagsAttribute 的简写。

于 2013-09-03T11:44:03.457 回答