c#創建枚舉類型使用enum關鍵字,限制其值只能是一組符號名稱。
一、聲明枚舉
定義枚舉要先寫一個enum關鍵字,后面跟上{},然后再{}內添加一組符號,這些符號標識了該枚舉類型可以擁有的合法值。例如:
enum week { Monday, Tuesday, Wednesday, Thrusday, Friday, Saturday, Sunday }//聲明一個星期的枚舉
二、使用枚舉
聲明好了之后,可以像使用其他任何類型一樣使用它們,上面聲明了一個week的枚舉下面我們使用它。例如
week weekday = week.Monday;//這個位置相當於聲明一個局部變量,存儲Monday int a = Convert.ToInt32(weekday);//a = week.Monday的int型數據 //try //{ // int a = Convert.ToInt32(weekday); // Console.WriteLine(a); //} //catch (System.FormatException) //{ // Console.WriteLine("格式錯誤"); //} Console.WriteLine("{0}\t{1}",weekday,a);
和所有的值類型一樣,可以使用修飾符 ? 創建一個可空枚舉變量。這樣除了能把枚舉類型定義的賦值給這個變量,還可以吧null賦值給它。例如
week weekday = week.Monday;//這個位置相當於聲明一個局部變量,存儲Monday week? weekdayTest = null;//使用?修飾weekdayTest變量 並賦值為null Console.WriteLine(weekdayTest);//輸出null Console.WriteLine(Convert .ToInt32(weekdayTest));//將null(weekdayTest)轉換為int型 weekdayTest = week.Sunday;//將weekdayTest賦值為week.Sunday Console.WriteLine(weekdayTest); int a = Convert.ToInt32(weekday);//a = week.Monday的int型數據 //try //{ // int a = Convert.ToInt32(weekday); // Console.WriteLine(a); //} //catch (System.FormatException) //{ // Console.WriteLine("格式錯誤"); //} Console.WriteLine("{0}\t{1}",weekday,a); Console.ReadLine();
需要注意的是,使用Console.writeLine顯示枚舉變量時,編譯器會自動生成代碼,輸出和變量值匹配的字符串,如果有必要,可以調用每個枚舉都有的ToString方法,顯示枚舉變量轉換成代表其當前值得字符串。
三、選擇枚舉的字面值
枚舉內部的每個元素都關聯(對應) 一個整數值。默認第一個元素對應整數0,以后每個元素都對應的整數都遞增1.數據可以從一種類型轉換為另一種類型,只要轉換結果是有效的,有意義的都會轉換成功。
static void Main(string[] args) { week weekday = week.Monday;//這個位置相當於聲明一個局部變量,存儲Monday week? weekdayTest = null;//使用?修飾weekdayTest變量 並賦值為null Console.WriteLine(weekdayTest);//輸出null Console.WriteLine(Convert .ToInt32(weekdayTest));//將null(weekdayTest)轉換為int型 weekdayTest = week.Sunday;//將weekdayTest賦值為week.Sunday Console.WriteLine(weekdayTest); Console.WriteLine(Convert.ToInt32(weekdayTest));//將null(weekdayTest)轉換為int型 int a = Convert.ToInt32(weekday);//a = week.Monday的int型數據 //try //{ // int a = Convert.ToInt32(weekday); // Console.WriteLine(a); //} //catch (System.FormatException) //{ // Console.WriteLine("格式錯誤"); //} Console.WriteLine("{0}\t{1}",weekday,a); Console.ReadLine(); }
注意:用於初始化枚舉字面值的整數值必須是編譯器編譯的時候能夠確定的常量值。
四、選擇枚舉的基礎類型
在聲明枚舉的時候,枚舉字面值默認是int類型,但是可以讓枚舉類型基於不同的基礎整形類型。可以是:byte(Max:255),sbyte(Max:127),short,ushrot,int,uint,long,ulong。例如
enum week:sbyte { Monday=1, Tuesday, Wednesday, Thrusday, Friday, Saturday, Sunday }//聲明一個星期的枚舉