C#枚舉類型與位域枚舉Enum
一、概述
定義一個值類型,其中包含固定值集合。枚舉類型變量可以是此集合中的任意一個或多個值。
枚舉使用enum關(guān)鍵字來聲明,與類同級。
枚舉本身可以有修飾符,但枚舉的成員始終是公共的,不能有訪問修飾符。枚舉本身的修飾符僅能使用public和internal。
二、常數(shù)枚舉
1、定義枚舉類型
顯式指定枚舉的底層數(shù)據(jù)類型,如果沒有明確指定底層數(shù)據(jù)類型則默認的數(shù)據(jù)類型是int類型。
enum sex : byte //顯示指定枚舉的底層數(shù)據(jù)類型 { male, female, //此逗號可以省略 }; //此分號可以省略
顯式設置枚舉的成員常量值,默認是從0開始,逐個遞增的。但是以下例子卻設置成了1,2,3,40,1。而且成員值可以一樣的。
void Main() { Console.WriteLine((int)Week.Monday); //獲取值 } enum Week { Monday = 1, Tuesday = 2, Wednesday = 3, Sunday = 0, Everyday = 1 //成員的值可以設置成一樣的,但是成員不行 }
2、聲明枚舉變量并初始化
Color myColor=Color.White; Color myColor=(Color)1;//由值轉(zhuǎn)成枚舉成員 Color myColor=(Color)Enum.Parse(typeof(Color), "White"); //將字符串解析成枚舉成員
3、枚舉變量的使用
Color myColor = Color.White; string Name = myColor.ToString(); int intName = (int)myColor;//或Convert.ToInt32(myColor) string Name1 = Enum.GetName(typeof(Color), 1); //由值獲取名
4、循環(huán)枚舉
Dictionary<string, int> Colorlist = new Dictionary<string, int>(); string[] keys = Enum.GetNames(typeof(Color)); Array values = Enum.GetValues(typeof(Color)); for (int i = 0; i < keys.Length; i++) { Colorlist.Add(keys[i], (int)values.GetValue(i)); }
應用:
//填充comboBox comboBox1.DataSource = Enum.GetValues(typeof(Color)); Color value = (Color)comboBox1.SelectedValue; //Grid的列數(shù)據(jù) DataGridViewComboBoxColumn col = new DataGridViewComboBoxColumn(); col.Name = "My Enum Column"; col.DataSource = Enum.GetValues(typeof(Color)); col.ValueType = typeof(Color); dataGridView1.Columns.Add(col);
三、位域枚舉
位域通常用于由可組合出現(xiàn)的元素組成的列表,位域設計為通過按位“或”運算組合來生成未命名的值,而枚舉常數(shù)則不是。
位域通常用 2 的冪(即 1、2、4、8 、16等2的幾次方)定義枚舉常量。這意味著組合的枚舉常量中的各個標志都不重疊。
1、定義枚舉類型
[Flags] //Flags屬性表示此枚舉為位域枚舉 enum Color { None = 0, Red = 1, White = 2, Blue = 4, Black = 8 }
2、聲明枚舉變量并初始化
Color myColor=Color.Red | Color.White|Color.Blue;//”|”表示相并 Color myColor = (Color)3;//由值轉(zhuǎn)成枚舉成員,Red, White Color myColor = (Color)Enum.Parse(typeof(Color), "White,Blue"); //將字符串解析成枚舉成員,White, Blue
3、枚舉變量的使用
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
4、位域枚舉特殊操作
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)//判斷是否只有白色。
到此這篇關(guān)于C#枚舉類型與位域枚舉Enum的文章就介紹到這了。希望對大家的學習有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
C#中調(diào)用Windows API的技術(shù)要點說明
本篇文章主要是對C#中調(diào)用Windows API的技術(shù)要點進行了詳細的介紹,需要的朋友可以過來參考下,希望對大家有所幫助2014-01-01