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

