C (102) 列舉型別與位域列舉Enum

2022-10-11 03:42:13 字數 2685 閱讀 6368

定義乙個值型別,其中包含固定值集合。列舉型別變數可以是此集合中的任意乙個或多個值。

列舉使用enum關鍵字來宣告,與類同級。

列舉本身可以有修飾符,但列舉的成員始終是公共的,不能有訪問修飾符。列舉本身的修飾符僅能使用public和internal。

顯式指定列舉的底層資料型別,如果沒有明確指定底層資料型別則預設的資料型別是int型別。

enum *** : byte  //顯示指定列舉的底層資料型別

;       //此分號可以省略

顯式設定列舉的成員常量值,預設是從0開始,逐個遞增的。但是以下例子卻設定成了1,2,3,40,1。而且成員值可以一樣的。

void main()

enum week

color mycolor=color.white;

color mycolor=(color)1;//由值轉成列舉成員

color mycolor=(color)enum.parse(typeof(color), "white"); //將字串解析成列舉成員

color mycolor = color.white;

string name = mycolor.tostring();

int intname = (int)mycolor;//或convert.toint32(mycolor)

string name1 = enum.getname(typeof(color), 1); //由值獲取名

dictionarycolorlist = new dictionary();

string keys = enum.getnames(typeof(color));

array values = enum.getvalues(typeof(color));

for (int i = 0; i < keys.length; i++)

應用:

//填充combobox

combobox1.datasource = enum.getvalues(typeof(color));

color value = (color)combobox1.selectedvalue;

//grid的列資料

datagridviewcomboboxcolumn col = new datagridviewcomboboxcolumn();

col.name = "my enum column";

col.datasource = enum.getvalues(typeof(color));

col.valuetype = typeof(color);

datagridview1.columns.add(col);

位域通常用於由可組合出現的元素組成的列表,位域設計為通過按位「或」運算組合來生成未命名的值,而列舉常數則不是。

位域通常用 2 的冪(即 1、2、4、8 、16等2的幾次方)定義列舉常量。這意味著組合的列舉常量中的各個標誌都不重疊。

[flags] //flags屬性表示此列舉為位域列舉

enum color

color mycolor=color.red | color.white|color.blue;//」|」表示相並

color mycolor = (color)3;//由值轉成列舉成員,red, white

color mycolor = (color)enum.parse(typeof(color), "white,blue"); //將字串解析成列舉成員,white, blue

color mycolor = color.red | color.white | color.blue;

string name = mycolor.tostring();//red,white,blue

int intname = (int)mycolor;//或convert.toint32(mycolor),7

string name2 = enum.getname(typeof(color), 2);//由值獲取名,white

1、判斷列舉變數是否包含在某個或某些列舉項:

if(mycolor & color.red)==color.red){}//」&」表示相交,判斷是否包含color.red

if(mycolor & color.red)!=0){}

2、從列舉變數中去除某個或某些列舉項:

mycolor=mycolor&(~(color.red | color.white ))//」~」表示取反,出去color.red | color.white兩項。
或者

mycolor=mycolor^(color.red | color.white )//」^」表示異或,不同為真,相同為假。
3、判斷美劇變數是否等於某個或某些列舉項:

if((mycolor | color.write)==color.write)//判斷是否只有白色。

15 列舉型別和標誌位

g常規 d十進位制 x十六進製制 mycontrol.style styles.showborder styles.showcaption 這時mycontrol.style列舉的值將變成 1 2 3,它的tostring 將變成 styles.showborder styles.showcapti...

C 學習筆記6 列舉型別

c 的enum工具提供了另一種建立符號常量的方式,這種方式可以代替const。我們可以使用關鍵字enum,比如定義乙個顏色的列舉型別,enum color 列舉型別變數內容必須是整數型別,預設是從0開始的,不允許是浮點型別。但是我們可以給變數賦值,然後之後的值加一。定義乙個列舉變數內容可以是整形,也...

C 程式語言(六) 列舉型別與結構型別

列舉型別 列舉型別 也稱為列舉 為定義一組可以賦給變數的命名整數常量提供了一種有效的方法。例如,假設您必須定義乙個變數,該變數的值表示一周中的一天。該變數只能儲存七個有意義的值。若要定義這些值,可以使用列舉型別。列舉型別是使用 enum 關鍵字宣告的。enum days 如果未在列舉數列表中指定元素...