System.Enum → System.ValueType,為值類型,可裝箱/拆箱。int,可指定 8 種基元類型(byte, sbyte, short, ushort, int, uint, long, ulong)。value__ 執行個體欄位)。列舉在 IL 中為定義一系列常數欄位與執行個體欄位 value__ 的結構。僅使用 Color.Red 等符號時視為常數處理,程式碼不再參考列舉類型,可刪除對應 DLL;若使用 Color c = new Color() 則產生相依性。
GetUnderlyingType:取得底層類型。ToString():支援 "G"(預設)、"D"(十進位)、"X"(十六進位,大寫,位數依底層類型決定)。Format:功能同 ToString,但允許傳遞數值而非列舉執行個體。GetValues:返回所有列舉符號組成的陣列。GetName/GetNames:取得數值對應的字串或陣列。Parse:符號/數值字串轉列舉執行個體,支援忽略大小寫。IsDefined:判斷數值/符號是否合法,常用於參數驗證(慎用:區分大小寫、使用反射、速度慢)。ToObject:將基元類型實例轉為列舉執行個體。位元旗標為位元集合(某些位開啟/關閉);列舉為數值(若干值累加)。在列舉套用 [Flags] 屬性,即可用列舉表示可組合的位元旗標,慣例定義 None = 0。
[Flags]
public enum FileAttributes {
ReadOnly = 0x0001,
Hidden = 0x0002,
System = 0x0004
}
(attributes & FileAttributes.Hidden) == FileAttributes.Hidden。File.SetAttributes(path, FileAttributes.ReadOnly | FileAttributes.Hidden)。ToString:檢查 [Flags] → 無則匹配單一符號;有則取降序數值集合,逐一 AND,匹配者以逗號連接輸出。特殊情況:無法組合出該數值時返回數值;應定義 0。Parse:移除空白 → 以 +/-/數字開頭視為數字直接轉型 → 否則以逗號分割,查找符號數值並 OR 組合。IsDefined(字串含逗號永不匹配;數值永回傳 false)。