枚举

枚举:

定义枚举使用到的关键字: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)

 
原文地址:https://www.cnblogs.com/jc-1997/p/6088621.html