枚举
枚举:
定义枚举使用到的关键字:enum
1 using System; 2 using System.Collections.Generic; 3 using System.Linq; 4 using System.Text; 5 using System.Threading.Tasks; 6 7 namespace Test_1 8 {
//新建一个名为DataOfDay的枚举类型,该类型具有七个成员 9 public enum DataOfDay 10 { 11 Monday, // 默认值:0 12 Tuesday, // 默认值:1 13 Wendsday, // 默认值:2 14 Thursday, // 默认值:3 15 Friday=3, // 默认值:4 3 16 Saturday, // 默认值:5 4 17 Sunday // 默认值:6 5 18 } 19 class Program 20 { 21 22 static void Main(string[] args) 23 { 24 //枚举中的成员都有默认值,且会从0依次递增 25 int data = (int)DataOfDay.Friday; 26 Console.WriteLine(data); 27 28 //可以给枚举中的成员赋值,值从该成员开始依次递增 29 int data_1 = (int)DataOfDay.Saturday; 30 Console.WriteLine(data_1); 31 32 Console.ReadKey(); 33 } 34 } 35 }
创建枚举的优点:
1.是代码易于维护,因为确保给变量指定合法的、期望的值。
2.代码清晰,允许用描述性的名称拜师整数值,而不是含义模糊,变化多端的数来表示。
3.易于键入(通过使用 . 符号)。
1 using System; 2 using System.Collections.Generic; 3 using System.Linq; 4 using System.Text; 5 using System.Threading.Tasks; 6 7 namespace Test_1 8 { 9 public enum DataOfDay 10 { 11 Monday, // 默认值:0 12 Tuesday, // 默认值:1 13 Wendsday, // 默认值:2 14 Thursday, // 默认值:3 15 Friday=3, // 默认值:4 16 Saturday, // 默认值:5 17 Sunday // 默认值:6 18 } 19 class Program 20 { 21 22 static void Main(string[] args) 23 { 24 //枚举中的成员都有默认值,且会从0依次递增 25 int data = (int)DataOfDay.Friday; 26 Console.WriteLine(data); 27 28 //可以给枚举中某个成员赋值,值从该成员开始依次递增 29 int data_1 = (int)DataOfDay.Saturday; 30 Console.WriteLine(data_1); 31 32 WritngGreeting(DataOfDay.Saturday); 33 34 35 Console.ReadKey(); 36 } 37 38 //使用枚举一般和合适的值传递给方法,并在switch语句中迭代可能的值. 39 static void WritngGreeting(DataOfDay dataofday) 40 { 41 switch (dataofday) 42 { 43 case DataOfDay.Monday: 44 Console.WriteLine("Good monday!"); 45 break; 46 case DataOfDay.Friday: 47 Console.WriteLine("Good friday!"); 48 break; 49 case DataOfDay.Saturday: 50 Console.WriteLine("Good saturday!"); 51 break; 52 default: 53 break; 54 } 55 } 56 } 57 }
注意:枚举类型的值类型是除 Char 外的任何整型,所以枚举类型的值是整型值。
在C#中枚举的真正强大之处使他们在后台会实例化为派生于基类的System.Enum的结构.这表示可以对他们调用方法,执行有用的任务.一旦代码编译好,枚举就成为了基本类型,与int和float类似.
//使用前面的例子获取枚举的字符串表示
DataOfDay data_2 = DataOfDay.Saturday;
Console.WriteLine(data_2);
//字符串类型转换为整型
DataOfDay data_3 = (DataOfDay)Enum.Parse(typeof(DataOfDay), "Saturday",true);
Console.WriteLine((int)data_3);
从字符串类型转化为枚举类型需要用到函数Enum.Parse(),这个方法需要三个参数,
第一个是要转换的枚举类型,用关键字typeof包起来,
第二个是要转换的字符串(一定是枚举中有的),
第三个是否忽略大小写.
看下例:
1 using System; 2 using System.Collections.Generic; 3 using System.Linq; 4 using System.Text; 5 using System.Threading.Tasks; 6 7 namespace Test_1 8 { 9 public enum Colors 10 { 11 blue, 12 red, 13 orange, 14 green, 15 black 16 } 17 class Program 18 { 19 20 static void Main(string[] args) 21 { 22 //enum --> string 23 Colors c1 = Colors.blue; 24 string str1 = c1.ToString(); 25 26 //string-->Enum 27 //利用Enum的静态方法Parse() 28 Colors c2=(Colors)Enum.Parse(typeof(Colors),"red",true); 29 string str2 = c2.ToString(); 30 Console.WriteLine(str2); 31 Console.ReadKey(); 32 33 //Enum-->int 34 //直接使用强制转换 35 int blue=(int)Colors.blue; 36 37 38 Console.ReadKey(); 39 } 40 41 42 } 43 }
如果要判断某个整型是否定义在枚举中的方法:Enum.IsDefined.
Enum.Isdefined(typeof(Colors),number)