C#枚舉類型與位域枚舉Enum
一、概述
定義一個(gè)值類型,其中包含固定值集合。枚舉類型變量可以是此集合中的任意一個(gè)或多個(gè)值。
枚舉使用enum關(guān)鍵字來聲明,與類同級(jí)。
枚舉本身可以有修飾符,但枚舉的成員始終是公共的,不能有訪問修飾符。枚舉本身的修飾符僅能使用public和internal。
二、常數(shù)枚舉
1、定義枚舉類型
顯式指定枚舉的底層數(shù)據(jù)類型,如果沒有明確指定底層數(shù)據(jù)類型則默認(rèn)的數(shù)據(jù)類型是int類型。
enum sex : byte //顯示指定枚舉的底層數(shù)據(jù)類型 { male, female, //此逗號(hào)可以省略 }; //此分號(hào)可以省略
顯式設(shè)置枚舉的成員常量值,默認(rèn)是從0開始,逐個(gè)遞增的。但是以下例子卻設(shè)置成了1,2,3,40,1。而且成員值可以一樣的。
void Main() { Console.WriteLine((int)Week.Monday); //獲取值 } enum Week { Monday = 1, Tuesday = 2, Wednesday = 3, Sunday = 0, Everyday = 1 //成員的值可以設(shè)置成一樣的,但是成員不行 }
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)); }
應(yīng)用:
//填充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è)計(jì)為通過按位“或”運(yùn)算組合來生成未命名的值,而枚舉常數(shù)則不是。
位域通常用 2 的冪(即 1、2、4、8 、16等2的幾次方)定義枚舉常量。這意味著組合的枚舉常量中的各個(gè)標(biāo)志都不重疊。
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、判斷枚舉變量是否包含在某個(gè)或某些枚舉項(xiàng):
if(myColor & Color.Red)==Color.Red){}//”&”表示相交,判斷是否包含Color.Red if(myColor & Color.Red)!=0){}
2、從枚舉變量中去除某個(gè)或某些枚舉項(xiàng):
myColor=myColor&(~(Color.Red | Color.White ))//”~”表示取反,出去Color.Red | Color.White兩項(xiàng)。
或者
myColor=myColor^(Color.Red | Color.White )//”^”表示異或,不同為真,相同為假。
3、判斷美劇變量是否等于某個(gè)或某些枚舉項(xiàng):
if((myColor | Color.Write)==Color.Write)//判斷是否只有白色。
到此這篇關(guān)于C#枚舉類型與位域枚舉Enum的文章就介紹到這了。希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
深入分析C#鍵盤勾子(Hook)攔截器,屏蔽鍵盤活動(dòng)的詳解
本篇文章是對(duì)C#鍵盤勾子(Hook)攔截器,屏蔽鍵盤活動(dòng)進(jìn)行了詳細(xì)的分析介紹,需要的朋友參考下2013-05-05C#中調(diào)用Windows API的技術(shù)要點(diǎn)說明
本篇文章主要是對(duì)C#中調(diào)用Windows API的技術(shù)要點(diǎn)進(jìn)行了詳細(xì)的介紹,需要的朋友可以過來參考下,希望對(duì)大家有所幫助2014-01-01c#之圓形無標(biāo)題欄橢圓窗體的實(shí)現(xiàn)詳解
本篇文章是對(duì)c#中圓形無標(biāo)題欄橢圓窗體的實(shí)現(xiàn)方法進(jìn)行了詳細(xì)的分析介紹,需要的朋友參考下2013-06-06C#實(shí)現(xiàn)時(shí)間戳與標(biāo)準(zhǔn)時(shí)間的互轉(zhuǎn)
本文主要介紹了C#中時(shí)間戳與標(biāo)準(zhǔn)時(shí)間互轉(zhuǎn)的方法,其中需要注意的是基準(zhǔn)時(shí)間的問題。文中的示例代碼具有一定的學(xué)習(xí)價(jià)值,快來跟隨小編一起了解一下吧2021-12-12解決C#程序只允許運(yùn)行一個(gè)實(shí)例的幾種方法詳解
本篇文章是對(duì)C#中程序只允許運(yùn)行一個(gè)實(shí)例的幾種方法進(jìn)行了詳細(xì)的分析介紹,需要的朋友參考下2013-05-05