在C#中以字节形式存储位的更优雅的方法?

在C#中以字节形式存储位的更优雅的方法?,c#,bit-manipulation,C#,Bit Manipulation,我想在C#中的一个字节变量中使用5个布尔值。我已经想出了下面的代码,它工作得很好,但它相当丑陋 byte myDataMask = 0; if (isOne) myDataMask |= 1; if (isTwo) myDataMask |= 2; if (isFour) myDataMask |= 4; if (isEight) myDataMask |= 8; if (isSixteen) myDataMask |= 16; 有没有更好、更优雅、更短的方法来表达同样的意思?举个例子怎么样:

我想在C#中的一个字节变量中使用5个布尔值。我已经想出了下面的代码,它工作得很好,但它相当丑陋

byte myDataMask = 0;
if (isOne) myDataMask |= 1;
if (isTwo) myDataMask |= 2;
if (isFour) myDataMask |= 4;
if (isEight) myDataMask |= 8;
if (isSixteen) myDataMask |= 16;

有没有更好、更优雅、更短的方法来表达同样的意思?

举个例子怎么样:

        public enum Mask
        {
            IS_NONE = 0,
            IS_ONE = 1,
            IS_TWO = 2,
            IS_FOUR = 4,
            IS_EIGHT = 8,
            IS_SIXTEEN = 16
        }
        private static void Main()
        {

            byte data = 0x04;

            switch ((Mask)data)
            {
                case Mask.IS_NONE :
                    break;

                case Mask.IS_ONE :
                    break;
                case Mask.IS_TWO :
                    break;
                case Mask.IS_FOUR :
                    break;
                case Mask.IS_EIGHT :
                    break;
                case Mask.IS_SIXTEEN :
                    break;


            }


        }

还有
位数组
类。如果你不想走
位数组
路线,只需将你的代码封装在它自己的类中,并给它一个索引器。MS不建议对位标志使用
[Flags]
属性(尽管它不承认做任何事情)?旁注:
公共枚举掩码:字节{…}
如果我们希望
enum
成为
byte
,而不是
Int32
MS还建议对enum成员使用PascalCase()。