枚举是用户定义的整数类型。在声明一个枚举时,要指定该枚举可以包含的彝族可接受的实例值。还可以给值指定易于记忆的名称。
使用枚举使代码更易于维护,使代码更清晰,使代码更易于键入。
public
enum
TimeOfDay
... {
Morning=0;
Afternoon=1;
Evening=2;
}
... {
Morning=0;
Afternoon=1;
Evening=2;
}
使用这个枚举一般把合适的值传送给方法,或在switch语句中迭代可能的值。
class
test
... {
public static int Main()
...{
Write(TimeOfDay.Morning);
return 0;
}
static void Write(TimeOfDay day)
...{
switch(day)
...{
case TimeOfDay.Morning:
Console.WriteLine("good morning");
break;
case TimeOfDay.Afternoon:
Console.WriteLine("good afternoon");
break;
case TimeOfDay.Evening:
Console.WriteLine("good evening");
break;
default:
Console.WriteLine("hallo");
break;
}
}
}
... {
public static int Main()
...{
Write(TimeOfDay.Morning);
return 0;
}
static void Write(TimeOfDay day)
...{
switch(day)
...{
case TimeOfDay.Morning:
Console.WriteLine("good morning");
break;
case TimeOfDay.Afternoon:
Console.WriteLine("good afternoon");
break;
case TimeOfDay.Evening:
Console.WriteLine("good evening");
break;
default:
Console.WriteLine("hallo");
break;
}
}
}
枚举的真正强大之处是它们在后台会实例化为派生于基类System.Enum的结构。可以对它们调用方法,执行有用的任务。在语法上把枚举当作结构是不会有性能损失的,一旦代码编译好,枚举就成为基本类型。
可以获取枚举的字符串表示:
TimeOfDay time
=
TimeOfDay.Afternoon;
Console.WriteLine(time.ToString);
Console.WriteLine(time.ToString);
可以从字符串中获取枚举值:
TimeOfDay time2
=
(TimeOfDay) Enum.Parse(
typeof
(TimeOfDay),
"
afternoon
"
,
true
);
Console.WriteLine(( int )time2);
Console.WriteLine(( int )time2);
要从字符串中转换,需要使用静态的Enum.Parse()方法,带3个参数,第一个是要使用的枚举类型,其语法是关键字typeof后跟放在括号中的枚举类名;第二个参数是要转换的字符串;第三个参数是一个bool,指定在进行转换时是否忽略大小写。最后注意,Enum.Parse()方法实际上返回一个对象引用——我们需要把这个字符串显式转换为需要的枚举类型(拆箱操作)。