我有這樣的方案,其中用戶有它的作用結合枚舉值與位標誌
NormalUser
護法
財經
兩個護法和金融是一個超級用戶
我如何檢查角色保管人是否是超級用戶
這是我的示例代碼..
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace ConsoleApplication3
{
public enum Role
{
NormalUser = 0,
Custodian = 1,
Finance = 2,
SuperUser = Custodian | Finance,
All = Custodian | Finance | NormalUser
}
class Program
{
static void Main(string[] args)
{
Console.WriteLine("Normal: " + Convert.ToInt32(Role.NormalUser));
Console.WriteLine("Custodian: " + Convert.ToInt32(Role.Custodian));
Console.WriteLine("Finance: " + Convert.ToInt32(Role.Finance));
Console.WriteLine("SuperUser: " + Convert.ToInt32(Role.SuperUser));
Console.WriteLine("All: " + Convert.ToInt32(Role.All));
Console.WriteLine();
Console.WriteLine("Normal User is in All: {0}", Role.NormalUser == Role.All);
Console.WriteLine("Normal User is not a SuperUser: {0}", Role.NormalUser != Role.SuperUser);
Console.WriteLine("Normal User is not a Custodian: {0}", Role.NormalUser != Role.Custodian);
Console.WriteLine();
Console.WriteLine("Custodian is in All: {0}", Role.Custodian == Role.All);
Console.WriteLine("Custodian is a SuperUser: {0}", Role.Custodian == Role.SuperUser);
Console.WriteLine("Custodian is a NormalUser: {0}", Role.Custodian == Role.NormalUser);
Console.WriteLine();
Console.WriteLine("Finance is in All: {0}", Role.Finance == Role.All);
Console.WriteLine("Finance is a SuperUser: {0}", Role.Finance == Role.SuperUser);
Console.WriteLine("Finance is a NormalUser: {0}", Role.Finance == Role.NormalUser);
Console.ReadLine();
}
}
}
,這是結果,如果我們運行
Normal: 0
Custodian: 1
Finance: 2
SuperUser: 3
All: 3
Normal User is in All: False
Normal User is not a SuperUser: True
Normal User is not a Custodian: True
Custodian is in All: False
Custodian is a SuperUser: False
Custodian is a NormalUser: False
Finance is in All: False
Finance is a SuperUser: False
Finance is a NormalUser: False
我期待一個
護法全部:真,
護法是超級用戶:真,
融資是全部:真,
金融是一個超級用戶:真,
普通用戶的所有:真
可能重複[什麼\ [Flags \]枚舉屬性在C#中的含義?](http://stackoverflow.com/questions/8447/what-does-the -flags-enum-attribute-mean-in-c) – drzaus