枚舉作爲Flag使用
語法
[Flags]
public enum Permission
{
create = 1,
read = 2,
update = 4,
delete = 8,
}
注意事項
- 由於flag的本質是使用或運算進行位運算,所以枚舉值必須是能進行或運算的
應用
- 權限管理
使用
//初始化
WeekEnum week = (WeekEnum)127;
Console.WriteLine(week.ToString()); //輸出 Sunday, Monday, Tuesday, Wendnesday, Thursday, Friday, Saturday
WeekEnum week = WeekEnum.Sunday;
//添加一個星期
week = week | WeekEnum.Monday;
Console.WriteLine(week.ToString()); // 輸出Sunday, Monday
//去掉一個星期
week = week & ~WeekEnum.Sunday;
Console.WriteLine(week.ToString()); //輸出 Monday
//判斷是否有某個元素
obj.HasFlag() // 返回True False
字符串轉化爲枚舉
string day = "monday";
WeekEnum today = (WeekEnum)Enum.Parse(typeof(WeekEnum), day, true);
// 最後一個參數標識字符串是否區分大小寫
修改枚舉的變量類型
xiupublic enum Color : short
{
}
// 可以變化爲 byte short int 等類型
枚舉的遍歷
public enum Suits
{
Spades,
Hearts,
Clubs,
Diamonds,
NumSuits
}
private static void Main(string[] args)
{
foreach (Suits suit in Enum.GetValues(typeof(Suits)))
{
Console.WriteLine((int)suit+ ":" + suit);
}
}