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