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} {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} {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} {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 }//声明一个星期的枚举