當列舉用來表示一組位集合而不是單個值的時候,我們就需要用到位列舉,在定義位列舉型別時,通常需要顯示的為每個列舉成員分配一個數值,并且還可以定義一些組合值,最后還需要給列舉加上[Flags]特性標記,如
[Flags]
public enum Actions
{
None = 0,
Read = 0x0001,
Write = 0x0002,
ReadWrite = Actions.Read | Actions.Write,
Delete = 0x0004,
Query = 0x0008,
All= 0x000F
}
有時候列舉的成員多了之后,用十進制數或者十六進制數表示列舉成員數值需要進行簡單計算,比較麻煩,所以列舉成員比較多的時候可以試試下面兩種方式
在C# 7.0后可以通過二進制數值進行表示
[Flags]
public enum Actions
{
None = 0,
Read = 0b0001,
Write = 0b0010,
ReadWrite = Actions.Read | Actions.Write,
Delete = 0b0100,
Query = 0b1000,
All=0b1111
}
還可以通過移位運算表示,通過將1左移對應的位數即可
[Flags]
public enum Actions
{
None = 0,
Read = 1 << 0,
Write = 1 << 1,
ReadWrite = Actions.Read | Actions.Write,
Delete = 1 << 2,
Query = 1 << 3,
All = ~(~0 << 4)
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/449010.html
標籤:.NET技术
