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