7.C#编程指南-枚举类型
枚举类型(也称为枚举)为定义一组可以赋给变量的命名整数常量提供了一种有效的方法。 例如,假设您必须定义一个变量,该变量的值表示一周中的一天。 该变量只能存储七个有意义的值。 若要定义这些值,可以使用枚举类型。枚举类型是使用 enum 关键字声明的。
enum Days { Sunday, Monday, Tuesday, Wednesday, Thursday, Friday, Saturday }; enum Months : byte { Jan, Feb, Mar, Apr, May, Jun, Jul, Aug, Sep, Oct, Nov, Dec };
默认情况下,枚举中每个元素的基础类型是 int。 可以使用冒号指定另一种整数值类型,如前面的示例所示。 有关可能的类型的完整列表,请参见 enum(C# 参考)。
以下是使用枚举而不使用数值类型的好处:
-
明确为客户端代码指定哪些值是变量的有效值。
-
在 Visual Studio 中,IntelliSense 列出定义的值。
使用System.Enum方法发现和操作枚举值
所有枚举都是 System.Enum 类型的实例。 不能从 System.Enum 派生新类,但可以使用它的方法发现有关枚举实例中的值的信息以及操作这些值。
string s = Enum.GetName(typeof(Days), 4); Console.WriteLine(s); Console.WriteLine("The values of the Days Enum are:"); foreach (int i in Enum.GetValues(typeof(Days))) Console.WriteLine(i); Console.WriteLine("The names of the Days Enum are:"); foreach (string str in Enum.GetNames(typeof(Days))) Console.WriteLine(str);
在下面例中,使用了基类选项来声明 long 类型的 enum 成员。 请注意,即使枚举的基础类型是 long,也仍然必须使用强制转换将枚举成员显式转换为 long 类型。
public class EnumTest2 { enum Range : long { Max = 2147483648L, Min = 255L }; static void Main() { long x = (long)Range.Max; long y = (long)Range.Min; Console.WriteLine("Max = {0}", x); Console.WriteLine("Min = {0}", y); } } /* Output: Max = 2147483648 Min = 255 */