zoukankan      html  css  js  c++  java
  • C#中的枚举类型

    浅谈C#中的枚举  转自
    http://www.cnblogs.com/liyingyi/archive/2005/12/28/306772.aspx   枚举类型是一种的值类型,它用于声明一组命名的常数。    (1)枚举的声明:枚举声明用于声明新的枚举类型。     访问修辞符 enum 枚举名:基础类型     {
            枚举成员     }
        基础类型必须能够表示该枚举中定义的所有枚举数值。枚举声明可以显式地声明 byte、sbyte、short、ushort、int、uint、long 或 ulong 类型作为对应的基础类型。没有显式地声明基础类型的枚举声明意味着所对应的基础类型是 int。     (2)枚举成员
            枚举成员是该枚举类型的命名常数。任意两个枚举成员不能具有相同的名称。每个枚举成员均具有相关联的常数值。此值的类型就是枚举的基础类型。每个枚举成员的常数值必须在该枚举的基础类型的范围之内。     示例:
            public enum TimeofDay:uint         {
                Morning=-3,             Afternoon=-2,             Evening=-1          }   
        产生编译时错误,原因是常数值 -1、-2 和 –3 不在基础整型 uint 的范围内。     (3)枚举成员默认值         
            在枚举类型中声明的第一个枚举成员它的默值为零。 
            以后的枚举成员值是将前一个枚举成员(按照文本顺序)的值加 1 得到的。这样增加后的值必须在该基础类型可表示的值的范围内;否则,会出现编译时错误。      示例:
            public enum TimeofDay:uint         {
                Morning,             Afternoon,             Evening          }   
        Morning的值为0,Afternoon的值为1,Evening的值为2。     (4)为枚举成员显示赋值
            允许多个枚举成员有相同的值.
            没有显示赋值的枚举成员的值,总是前一个枚举成员的值+1.       示例
            public enum Number         {






                a=1,             b,             c=1,             d         }
            b的值为2,d的值为2.
        注意:以上枚举值都不能超过它的基础类型范围。否则会报错.     (5)枚举类型与基础类型的转换      基础类型不能隐式转换为枚举类型      枚举类型也不能隐式转换为基础类型     示例:
        public enum Number     {         a,         b,         c,         d     } 
        class Test     {
            public static void Main()         {
                int i=Number.a;//错误,要强制类型转换(int)Number.a             Number n;
                n=2            //错误,要强制类型转换(Number)2         }     }
        (6)System.Enum类型
        System.Enum 类型是所有枚举类型的抽象基类,并且从 System.Enum 继承的成员在任何枚举类型中都可用。
        System.Enum 本身不是枚举类型。相反,它是一个类类型,所有枚举类型都是从它派生的。
        System.Enum 从类型 System.ValueType派生   

      (7)使用枚举类型         using System;
            public enum TimeofDay         {
                 Morning,           

              Afternoon,         

              Evening       

      }    






            class Test          {
                 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;                   }              }
                 static void Main()               {
                      WriteGreeting(TimeofDay.Morning);                    WriteGreeting(TimeofDay.Evening);                   WriteGreeting(TimeofDay.Afternoon);              }         }

  • 相关阅读:
    Azure PowerShell (2) 修改Azure订阅名称
    Windows Azure Platform Introduction (11) 了解Org ID、Windows Azure订阅、账户
    Azure PowerShell (3) 上传证书
    Azure PowerShell (1) PowerShell入门
    Windows Azure Service Bus (2) 队列(Queue)入门
    Windows Azure Service Bus (1) 基础
    Windows Azure Cloud Service (10) Role的生命周期
    Windows Azure Cloud Service (36) 在Azure Cloud Service配置SSL证书
    Android studio 使用心得(一)—android studio快速掌握快捷键
    android 签名、混淆打包
  • 原文地址:https://www.cnblogs.com/hyk110988/p/3446065.html
Copyright © 2011-2022 走看看