C#标记枚举字大小

And*_*ndy 9 c# attributes

如果我宣布

[Flags]
public enum MyColor
{
    Red = 1;
    Green = 2;
    Blue = 4;
    White = 8;
    Magenta = 16;
    ... (etc)
}
Run Code Online (Sandbox Code Playgroud)

有没有办法确定/设置此枚举占用的字节数?它还会以什么字节顺序结束?(例如,我是否必须通过线路正确发送HostToNetwork()?)另外,为了调用HostToNetwork,我可以转换为字节数组并进行迭代吗?

Meh*_*ari 10

[Flags]
public enum MyColor : byte // sets the underlying type.
{
    Red = 0;
    Green = 1;
    Blue = 2;
    White = 4;
    Magenta = 8;
    ... (etc)
}
Run Code Online (Sandbox Code Playgroud)

直接设置字节序是不可能的.您可以使用一些精心设计的数字来模拟小端系统上的大端字节.但是,我总是使用显式API来转换字节顺序.

  • 作为参考,如果未指定,则默认大小为Int32,并且当涉及字节顺序时,引擎盖下的标准数字具有与数字相同的规则. (4认同)

And*_*ndy 6

完整的答案是:

  • 有没有办法确定/设置此枚举占用的字节数?

是:

[Flags]
public enum MyColor : byte // sets the underlying type.
{
    Red = 1;
    Green = 2;
    Blue = 4;
    White = 8;
    Magenta = 16;
    ... (etc)
}
Run Code Online (Sandbox Code Playgroud)
  • 它还会以什么字节顺序结束?

无论它是什么编译,所以对于我的情况,x86(小).

  • 另外,为了调用HostToNetwork,我可以转换为字节数组并进行迭代吗?

这是它的棘手问题.我发现了一些东西: