枚举

来源:互联网 发布:热血江湖手游暴击算法 编辑:程序博客网 时间:2024/06/10 08:49

       

         枚举是用户定义的整数类型。在声明一个枚举时,要指定该枚举可以包含的一组可接受的实例值。不仅如此,还可以给值指定易于记忆的名称。如果在代码的某个地方,要试图把一个不在可接受范围内的值赋予枚举的一个实例,编译器就会报告一个错误。这个概念对于VB程序员来说是新的。C++支持枚举,但C#枚举要比C++枚举强大得多。

从长远来看,创建枚举可以节省大量的时间,减少许多麻烦。使用枚举比使用无格式的整数至少有如下三个优势:

       如上所述,枚举可以使代码更易于维护,有助于确保给变量指定合法的、期望的值。

       枚举使代码更清晰,允许用描述性的名称表示整数值,而不是用含义模糊的数来表示。

       枚举使代码更易于键入。在给枚举类型的实例赋值时,VS .NET IDE会通过IntelliSense弹出一个包含可接受值的列表框,减少了按键次数,并能够让我们回忆起可选的值。

定义如下的枚举:

public enum TimeOfDay

{

   Morning = 0,

   Afternoon = 1,

   Evening = 2

}

在本例中,在枚举中使用一个整数值,来表示一天的每个阶段。现在可以把这些值作为枚举的成员来访问。例如,TimeOfDay.Morning返回数字0。使用这个枚举一般是把合适的值传送给方法,在switch语句中迭代可能的值。

class EnumExample

{

   public static int Main()

   {

      WriteGreeting(TimeOfDay.Morning);

      return 0;

   }

 

   static void WriteGreeting(TimeOfDay timeOfDay)

   {

      switch(timeOfDay)

      {

         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("Hello!");

            break;

      }

   }

}

C#中,枚举的真正强大之处是它们在后台会实例化为派生于基类System.Enum的结构。这表示可以对它们调用方法,执行有用的任务。注意因为.NET Framework的执行方式,在语法上把枚举当做结构是不会有性能损失的。实际上,一旦代码编译好,枚举就成为基本类型,与intfloat类似。

可以获取枚举的字符串表示,例如使用前面的TimeOfDay枚举:

TimeOfDay time = TimeOfDay.Afternoon;

Console.WriteLine(time.ToString());

会返回字符串Afternoon

另外,还可以从字符串中获取枚举值:

TimeOfDay time2 = (TimeOfDay) Enum.Parse(typeof(TimeOfDay), "afternoon", true);

Console.WriteLine((int)time2);

这段代码说明了如何从字符串获取枚举值,并转换为整数。要从字符串中转换,需要使用静态的Enum.Parse()方法,这个方法带3个参数,第一个参数是要使用的枚举类型。其句法是关键字typeof后跟放在括号中的枚举类名。typeof运算符将在第5章详细论述。第二个参数是要转换的字符串,第三个参数是一个bool,指定在进行转换时是否忽略大小写。最后,注意Enum.Parse()方法实际上返回一个对象引用—— 我们需要把这个字符串显式转换为需要的枚举类型(这是一个拆箱操作的例子)。对于上面的代码,将返回1,作为一个对象,对应于TimeOfDay. Afternoon的枚举值。在显式转换为int时,会再次生成1

System.Enum上的其他方法可以返回枚举定义中的值的个数、列出值的名称等。详细信息参见MSDN文档。

原创粉丝点击