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(); }
注意:用于初始化枚举字面值的整数值必需是编译器编译的时候能够确定的常量值。
四、选择枚举的根本类型