1. 程式人生 > WINDOWS開發 >C#列舉中使用Flags特性

C#列舉中使用Flags特性

這種用處很大,比如許可權、執行狀態等,都可以用一個int型儲存到資料庫中,C#中使用列舉可以處理這個問題。

    [Flags]
    public enum Permission
    {
        create = 1,read = 2,update = 4,delete = 8,}

C#對該型別的操作如下:

            Permission permission = Permission.create | Permission.read | Permission.update | Permission.delete;
            Console.WriteLine("1、列舉建立,並賦值……");
            Console.WriteLine(permission.ToString());
            Console.WriteLine((int)permission);

            permission = (Permission)Enum.Parse(typeof(Permission),"5");
            Console.WriteLine("2、通過數字字串轉換……");
            Console.WriteLine(permission.ToString());
            Console.WriteLine((int)permission);

            permission = (Permission)Enum.Parse(typeof(Permission),"update,delete,read",true);
            Console.WriteLine("3、通過列舉名稱字串轉換……");
            Console.WriteLine(permission.ToString());
            Console.WriteLine((int)permission);

            permission = (Permission)7;
            Console.WriteLine("4、直接用數字強制轉換……");
            Console.WriteLine(permission.ToString());
            Console.WriteLine((int)permission);

            permission = permission & ~Permission.read;
            Console.WriteLine("5、去掉一個列舉項……");
            Console.WriteLine(permission.ToString());
            Console.WriteLine((int)permission);

            permission = permission|Permission.delete;
            Console.WriteLine("6、加上一個列舉項……");
            Console.WriteLine(permission.ToString());
            Console.WriteLine((int)permission);

在資料庫中判斷:

AND (@permission IS NULL OR @permission=0 OR permission &@permission [email protected])

上面的sql語句同樣可以判斷多個許可權