enum

来源:互联网 发布:当战脸型数据 编辑:程序博客网 时间:2024/04/28 19:57

 关键字enum用于声明枚举,枚举是一种值类型,由许多名字的常量(也叫枚举表)组成。例如
const int Monday=0;
const int Tuesday=1;
……
const  Sunday=7;
可以用C#提供的枚举类型

enum Week
Monday,Tuesday, Wednesday, Thursday,Friday,Saturday,Sunday};
枚举中每一个常量都对应着一个数值,如果不特别设置,枚举从0开始,每个后续值都为前一个值加1。若有如下定义
enum Values
{
 value1,
value2,
vlaue3
=30,
value4
};
其中value1=0,value2=1,value3=30,value4=31;
需要注意的是在枚举类型和整型之间的转换需显示进行:
int a =(int) Week.Friday;
例如:
  1.  public class food
  2.     {
  3.         public enum foodType
  4.         { Pizza=1,Pasta,Spaghetti}
  5.         public void GetFoodOrder(string Custname, foodType order)
  6.         {
  7.             Console.WriteLine("the dinner of customer {0} is {1}",Custname,order);
  8.         }        
  9.     }
  10.     class Program
  11.     {
  12.         static void Main(string[] args)
  13.         {
  14.             food myfood = new food();
  15.             myfood.GetFoodOrder("Scoopy",(food.foodType.Pizza));
  16.             Console.WriteLine("您享用的是本店的第"+(int)food.foodType.Pizza+"种主食");
  17.             Console.ReadLine();
  18.         }
  19.     }
运行结果为
这里定义一个enum,表示逻辑的“是”、“否”、“未知”三种状态:
  1. public enum LogicType {
  2.       NO,//否
  3.       YES,//是
  4.       UNKNOWN;//不确定
  5.       
  6.       @Override
  7.       public String toString(){
  8.        switch(this){
  9.           case NO:
  10.             return "否";
  11.           case YES:
  12.            return "是";
  13.           case UNKNOWN:  
  14.            return "未知";
  15.        }
  16.        return super.toString();
  17.       }
  18. }
如果不喜欢在Override的时候使用switch(..) case的结构,可以修改定义为:
  1. public enum LogicType 
  2. {
  3.       NO("否"),//否
  4.       YES("是"),//是
  5.       UNKNOWN("未知");//不确定
  6.       private String name = null;
  7. public void setName(String name){this.name = name; }
  8.       public String getName(){ return this.name;}
  9.  LogicType(String name){ this.name = name;} 
  10.  @Override public String toString(){ return this.name; }}