在C#中,枚举的真正强大之处是它们在后台会实例化为派生于基类System.Enum的结构。这表示可以对它们调用方法,执行有用的任务。注意因为.NET Framework的执行方式,在语法上把枚举当做结构是不会有性能损失的。实际上,一旦代码编译好,枚举就成为基本类型,与int和float类似。
1 public enum TimeOfDay
2 {
3 Morning = 0,
4 Afternoon = 1,
5 Evening = 2
6 }
7
8 class EnumExample
9 {
10 public static int Main()
11 {
12 WriteGreeting(TimeOfDay.Morning);
13 return 0;
14 }
15
16 static void WriteGreeting(TimeOfDay timeOfDay)
17 {
18 switch(timeOfDay)
19 {
20 case TimeOfDay.Morning:
21 Console.WriteLine("Good morning!");
22 break;
23 case TimeOfDay.Afternoon:
24 Console.WriteLine("Good afternoon!");
25 break;
26 case TimeOfDay.Evening:
27 Console.WriteLine("Good evening!");
28 break;
29 default:
30 Console.WriteLine("Hello!");
31 break;
32 }
33 }
34 }
可以获取枚举的字符串表示,例如使用前面的TimeOfDay枚举:
TimeOfDay time = TimeOfDay.Afternoon;
Console.WriteLine(time.ToString());会返回字符串Afternoon。
Console.WriteLine(time.ToString());会返回字符串Afternoon。
另外,还可以从字符串中获取枚举值:
TimeOfDay time2 = (TimeOfDay) Enum.Parse(typeof(TimeOfDay), "afternoon");
Console.WriteLine((int)time2);
Console.WriteLine((int)time2);