W3Cschool
恭喜您成為首批注冊用戶
獲得88經(jīng)驗值獎勵
枚舉是一種特殊的值類型,是指定的數(shù)字常量組。
例如:
public enum Direction { Left, Right, Top, Bottom }
我們可以使用這個枚舉類型如下:
Direction topSide = Direction.Top; bool isTop = (topSide == Direction.Top); // true
每個枚舉成員都有一個基本的整數(shù)值。
默認情況下,底層值的類型為int。
將以枚舉成員的聲明順序自動分配常量0,1,2 ...。
我們可以指定一個替代整數(shù)類型,如下:
public enum Direction : byte { Left, Right, Top, Bottom }
我們還可以為每個枚舉成員指定明確的底層值:
public enum Direction : byte { Left=1, Right=2, Top=10, Bottom=11 }
編譯器還允許我們顯式地分配一些枚舉成員。
未賦值的枚舉成員保持從最后一個顯式值開始遞增。
上述示例等效于以下內(nèi)容:
public enum Direction : byte { Left=1, Right, Top=10, Bottom }
我們可以使用顯式轉(zhuǎn)換將枚舉實例轉(zhuǎn)換為其基礎整數(shù)值:
int i = (int) Direction.Left; Direction side = (Direction) i; bool leftOrRight = (int) side <= 2;
數(shù)字文字0由編譯器在枚舉表達式中特別處理,不需要顯式轉(zhuǎn)換:
Direction b = 0; // No cast required if (b == 0) ...
枚舉的第一個成員通常用作“默認”值。
對于組合枚舉類型,0表示“無標志”。
我們可以結(jié)合枚舉成員。
為了防止歧義,可組合枚舉的成員需要明確賦值,通常為2的冪。
例如:
[Flags] public enum Directions { None=0, Left=1, Right=2, Top=4, Bottom=8 }
要使用組合枚舉值,我們使用位運算符,例如|和&
它們對基本整數(shù)值進行操作:
Directions leftRight = Directions.Left | Directions.Right; if ((leftRight & Directions.Left) != 0) { Console.WriteLine ("Includes Left"); // Includes Left } string formatted = leftRight.ToString(); // "Left, Right" Directions s = Directions.Left; s |= Directions.Right; Console.WriteLine (s == leftRight); // True s ^= Directions.Right; // Toggles Directions.Right Console.WriteLine (s); // Left
按照慣例,當其成員可組合時,F(xiàn)lags屬性應該始終應用于枚舉類型。
為方便起見,您可以在枚舉聲明中包含組合成員:
[Flags] public enum Directions { None=0, Left=1, Right=2, Top=4, Bottom=8, LeftRight = Left | Right, TopBottom = Top | Bottom, All = LeftRight | TopBottom }
使用枚舉的運算符有:
= == != < > <= >= + -^ & | ? += -= ++ -- sizeof
按位,算術(shù)和比較運算符返回處理基本整數(shù)值的結(jié)果。
允許在枚舉和整數(shù)類型之間添加,但不允許在兩個枚舉之間添加。
Copyright©2021 w3cschool編程獅|閩ICP備15016281號-3|閩公網(wǎng)安備35020302033924號
違法和不良信息舉報電話:173-0602-2364|舉報郵箱:jubao@eeedong.com
掃描二維碼
下載編程獅App
編程獅公眾號
聯(lián)系方式:
更多建議: