標籤:fine .com write tostring -- 轉換 logs 混合 img
聲明一個枚舉:
public enum Week { one = 1, two = 2, three }
反編譯
我們可以看到,我們建立的枚舉自動繼承自System.Enum,那麼Enum又是怎麼樣的呢?
可以看到Enum是一個抽象類別,它繼承自ValueType但它又不是一個實值型別,所以它有點特殊
那麼枚舉中到底可以有哪些類型呢?
通過查看原始碼我們看到了一個ValuesAndNames這個類,所以說,只要是不大於ulong的整數都可以作為值
既然我們知道了怎麼聲明,接下來就是如何使用了以及轉換
掌握了上面的基本也就掌握了枚舉,當然如果你先判斷一個值是否在枚舉中,列舉枚舉的值該怎麼辦呢?
這時候我們就需要Enum類來協助我們了
判斷一個值是否在枚舉中
static void Main(string[] args) { Console.WriteLine(Enum.IsDefined(typeof(Week),1));//true Console.Read(); }
列舉值:
foreach (var item in Enum.GetNames(typeof(Week))) { Console.WriteLine(item); }
當然上面的枚舉有時不夠用怎麼辦,假如我有一個顏色的枚舉,紅,黃,白假如紅和黃混合就是紅黃色0-0,那麼我們是否需要在建立一個枚舉值呢?
答案可以是需要,也可以不需要,我們可以使用位枚舉
[Flags] public enum Week { hong = 0x1, huang = 0x10 }
static void Main(string[] args) { Week w = Week.hong | Week.huang; Console.WriteLine(w.ToString()); Console.Read(); }
那如果要判斷一個值是否在枚舉中呢?
Week w = Week.hong | Week.huang; Console.WriteLine((w&Week.hong)!=0);
C#-------------枚舉