枚举类型(也可以称为 "枚举器" )由一组具有独立标识符(名称)的整数类型常量构成。在 C# 中枚举类型可以在类或结构体的内部声明,也可以在类或结构体的外部声明。默认情况下,枚举类型中的每个成员都为 int 类型,它们的值从 0 开始,并按定义顺序依次递增。
在 C# 中可以使用 enum 关键字来声明枚举类型,语法格式如下所示:
enum enum_name
{
enumeration_list;
}说明:
enum_name 为枚举类型变量的名称;
enumeration_list 为枚举类型中的成员列表。其中包含若干使用逗号分隔的标识符,每个标识符都代表了一个整数值。
在使用枚举类型时有以下几点需要注意:
- 枚举类型中不能定义方法;
- 枚举类型具有固定的常量集;
- 枚举类型可提高类型的安全性;
- 枚举类型可以遍历;
举例:
// 枚举变量的使用:
class Program
{
enum Day { Sun, Mon, Tue, Wed, Thu, Fri, Sat };
static void Main(string[] args)
{
Console.WriteLine("Sun = {0}", (int)Day.Sun); // 0
Console.WriteLine("Mon = {0}", (int)Day.Mon); // 1
Console.WriteLine("Tue = {0}", (int)Day.Tue); // 2
Console.WriteLine("Wed = {0}", (int)Day.Wed); // 3
Console.WriteLine("Thu = {0}", (int)Day.Thu); // 4
Console.WriteLine("Fri = {0}", (int)Day.Fri); // 5
Console.WriteLine("Sat = {0}", (int)Day.Sat); // 6
Console.ReadKey();
}
}
另外,我们也可以显式的为每个枚举类型的成员赋值,如下所示:
// 使用 GetValues() 遍历枚举类型中的所有成员:
class Program
{
enum Season
{
spring,
summer,
autumn = 100,
winter
}
static void Main(string[] args)
{
foreach (Season s in Enum.GetValues(typeof(Season)))
{
Console.WriteLine("{0} = {1}", s, (int)s);
}
Console.ReadKey();
}
}
// 运行结果如下:
spring = 0
summer = 1
autumn = 100
winter = 101
举例2:
// 使用 GetNames() 遍历枚举类型中的所有成员:
class Program
{
enum ErrorCode
{
None = 10,
Unknown,
ConnectionLost = 15,
OutlierReading
}
static void Main(string[] args)
{
foreach (string ec in Enum.GetNames(typeof(ErrorCode)))
{
Console.WriteLine(ec);
}
Console.ReadKey();
}
}
// 运行结果如下:
None
Unknown
ConnectionLost
OutlierReading