C#枚举的位运算

文章目录

      • 一、枚举
      • 二、位运算

一、枚举

枚举类型是名称与值的组合。

枚举类型是值类型。

public enum Options
{
            Insert,
            Update,
            Save,
            Delete,
            Query
}

编译器会给上面补充完整,默认从0开始,依次赋值。

二、位运算

我们可能需要多个枚举的组合来满足我们的需要。

位运算是针对二进制位进行的运算,常用的位运算主要有与(&), 或(|)和非(~)

//e.m:
1 & 0 = 0, 1 | 0 = 1, ~1 = 0

要使枚举类型具有位运算的能力,需要加上特性[FlagsAttribute]简写[Flags]。有些位处于on状态,有些处于off状态。所以通常在定义一个None=0的枚举符号。相对应的值都为2的指数倍。为的是后续的运算。

class Program
    {
        static void Main(string[] args)
        {
            OprationType opration = OprationType.Read | OprationType.Write;

            Console.WriteLine(opration.ToString());
            Console.Read();
        }
    }

    [FlagsAttribute]
    public enum OprationType
    {
        None = 0,
        Read=1,
        Write=2,
    }

运行结果如图:

C#枚举的位运算_第1张图片
或运算之后想要去掉某个,可以使用-=

class Program
    {
        static void Main(string[] args)
        {
            OprationType opration = OprationType.Read | OprationType.Write;
            opration -= OprationType.Write;
            Console.WriteLine(opration.ToString());
            Console.Read();
        }
    }

    [FlagsAttribute]
    public enum OprationType
    {
        None = 0,
        Read=1,
        Write=2,
    }

C#枚举的位运算_第2张图片
我们可以根据“&”与操作进行权限判断,可以表示为:0011&0001=0001,后面0001==0001,符合条件,有Insert权限。

你可能感兴趣的:(编程语言)