C 列舉 詳解

2021-10-05 09:07:59 字數 2101 閱讀 6156

列舉是乙個值型別, 包含一組命名的常量,  列舉型別用 enum 關鍵字定義

public enum color

可以宣告列舉型別的變數, 如變數 c1, 用列舉型別的名稱作為字首,設定乙個命名常量,來賦予列舉中的乙個值

color c1  = color.red;

console.writeline( c1 );

// 控制台輸出

// red

執行程式, 控制台輸出顯示 red, 這是列舉的常量值。

預設情況下, enum 的型別是 int。 這個基本型別可以改為其他整數型別 (byte、short、int 、帶符號的 long 和 無符號變數)。

命名常量的值從0開始遞增,但它們可以改為其他值:

public enum color : short

使用強制型別轉換可以把數字改為列舉值, 把列舉值改為數字。

color c2 = (color)2;

short number = (short) c2;

還可以使用 enum 型別把多個選項分配給乙個變數, 而不僅僅是乙個列舉常量。為此,分配給常量的值必須是不同的位, flags屬性需要用列舉設定。

[flags]

public enum daysofweek

daysofweek 為每天定義了不同的值。 要設定不同的位, 可以使用 0x 字首指定的 十六進製制輕鬆完成, flags 屬性是編譯器建立值的另乙個字串表示的資訊, 例如給 daysofweek 的乙個變數設定值3, 結果 monday ,如果使用 flags 屬性,結果就是 tuesday 。 有了這個列舉宣告, 就可以使用邏輯或運算子為乙個變數指定多個值:

daysofweek mondayandwednesday = daysofweek.monday | daysofweek.wednesday;

console.writeline( mondayandwednesday );

// 控制台輸出

// monday , tuesday

設定不同的位, 也可以結合單個位來包括多個值, 如 weekend 的值 0x60 是用邏輯或運算子結合了 saturday 和 sunday 。workday 則結合了從 monday 到 friday

的所有日子, allweek 用邏輯或運算子結合了 workday 和 weekend

[flags]

public enum daysofweek

enum 類有時非常有助於動態獲得列舉型別的資訊。 列舉提供了方法來解析字串, 獲得相應的列舉常數, 獲得列舉型別的所有名稱和值。

color red;

if( enum.tryparse("red", out red) )

", red) );

}// 控制台輸出

// red

注意: enum.tryparse() 是乙個泛型方法, 其中t是泛型引數型別。

該方法返回乙個包含所有列舉名的字串陣列:

foreach( var day in enum.getnames( typeof(color) ) )

// 控制台輸出

// red

// green

// blue

為了獲得列舉的所有值, 可以使用 enum.getvalues 。 enum.getvalues 返回列舉值的乙個陣列。 為了獲得整數值, 需要把它轉換為列舉的底層型別, 為此應使用 foreach語句:

foreach( short val in enum.getvalues( typeof(color) ) )

// 控制台輸出

// 1

// 2

// 3

c語言列舉詳解

列舉一般用於定義乙個集合,如色彩,星期等等,他提供了更加貼近實際的對物件的描述,方便了程式設計工作.下面簡單介紹下c語言中的列舉型別和在linux系統中的作用。列舉是乙個被命名的整型常數的集合,列舉在日常生活中很常見。例如表示星期的sunday,monday,tuesday,wednesday,th...

C 列舉型別詳解

列舉型可以隱式的轉換為int型 int型不能隱式的轉換為列舉型,int型必須強制轉換為列舉型。一 列舉型別的定義 enum 型別名 型別名是變數名,指定列舉型別的名稱。列舉值表也叫列舉元素列表,列出定義的列舉型別的所有可用值,各個值之間用 分開。例 enum suit 二 列舉變數說明 列舉變數有多...

C 列舉型別詳解

列舉型別 enumeration 是c 中的一種派生資料型別,它是由使用者定義的若干列舉常量的集合。定義格式 列舉型別的定義格式為 enum 型別名 其中 應用舉例 enum color set1 定義列舉型別color set1 enum week 定義列舉型別week 重要提示 定義列舉型別的主...