首先,声明枚举类型的变量:
//除枚举类型转换成整数类型示范中修改了该代码,其他均采用此枚举类型的声明。
[public] enum Subject
{
Chinese,
Math,
English,
AndroidDevelop,
GameDevelop
}
注意:
①【public】关键字视情况而定,可以不加。
②最好是在命名空间下直接定义枚举,以便该命名空间中的所有类都能够使用。
③最后一个值可以加【,】也可以不加。
1. 枚举(enum)类型→整数(int)类型
Subject subject1 = Subject.Chinese; Subject subject2 = Subject.AndroidDevelop; int num1 = (int)subject1; int num2 = (int)subject2; Console.WriteLine(num1);//输出:0 Console.WriteLine(num2);//输出:3 Console.ReadKey();
注:第一个枚举元素的值为0,后面每个枚举元素的值依次递增。
修改枚举元素的值后,查看枚举数的值变化规律。不难发现,可以强制修改枚举元素序列从某一个数值开始递增。
public enum Subject
{
//仅仅在第1小点这里修改枚举类型元素的序号
Chinese = 5,
Math,
English = 10,
AndroidDevelop,
GameDevelop
}
Console.WriteLine((int)Subject.Chinese);//输出:5 Console.WriteLine((int)Subject.Math);//输出:6 Console.WriteLine((int)Subject.English);//输出:10 Console.WriteLine((int)Subject.AndroidDevelop);//输出:11 Console.WriteLine((int)Subject.GameDevelop);//输出:12 Console.ReadKey();
2. 整数(int)类型→枚举(enum)类型
int i = 3; Subject subject = (Subject)i; Console.WriteLine(subject);//输出:AndroidDevelop Console.ReadKey();
由此可见,在转化为枚举类型的过程中,当枚举类型的元素序号包括整数类型的数值就得到枚举类型的元素,如果没有包括整数类型的数值,得到的是数值本身。
int i = 8; Subject subject = (Subject)i; Console.WriteLine(subject);//输出:8 Console.ReadKey();
3. 枚举(enum)类型→字符串(string)类型
Subject subject = Subject.GameDevelop; string str = subject.ToString(); Console.WriteLine(str);//输出:GameDevelop Console.ReadKey();
万物皆可ToString():
int i = 1; double d = 2.2; char c = 'C'; decimal m = 200.5m; Console.WriteLine(i.ToString());//输出:1 Console.WriteLine(d.ToString());//输出:2.2 Console.WriteLine(c.ToString());//输出:C Console.WriteLine(m.ToString());//输出:200.5 Console.ReadKey();
4. 字符串(string)类型→枚举(enum)类型
①字符串内容的值与枚举元素名一致,输出枚举元素名。
string str1 = "Math"; Subject subject1 = (Subject)Enum.Parse(typeof(Subject), str1); Console.WriteLine(subject1);//输出:Math Console.ReadKey();
②字符串内容的数值与枚举元素序号一致,输出对应的序号值的枚举元素名。
string str2 = "3"; Subject subject2 = (Subject)Enum.Parse(typeof(Subject), str2); Console.WriteLine(subject2);//输出:AndroidDevelop Console.ReadKey();
③字符串内容的数值与枚举元素序号不一致,输出字符串内容的数值。
string str3 = "10"; Subject subject3 = (Subject)Enum.Parse(typeof(Subject), str3); Console.WriteLine(subject3);//输出:10 Console.ReadKey();
④除了数值以及与枚举元素一致的文本内容外,其他字符串本文内容无法转换成枚举类型,因此会抛出异常。
//这里是错误示范!代码存在异常! string str3 = "异常内容"; Subject subject3 = (Subject)Enum.Parse(typeof(Subject), str3);//抛出异常 Console.WriteLine(subject3); Console.ReadKey();
因为作者精力有限,文章中难免出现一些错漏,敬请广大专家和网友批评、指正。



