首页 > 代码库 > c# 之Enum--枚举
c# 之Enum--枚举
枚举
收藏的博文连接
枚举类型声明为一组相关的符号常数定义了一个类型名称。枚举用于“多项选择”场合,就是程序运行时从编译时已经设定的固定数目的“选择”中做出决定。
枚举类型(也称为枚举):该类型可以是除 char以外的任何整型(重点)。 枚举元素的默认基础类型为 int.准许使用的枚举类型有 byte、sbyte、short、ushort、int、uint、long 或 ulong。其作用就是规范代码,通常情况下,最好是在命名空间内直接定义枚举,以便该命名空间中的所有类都能够同样方便地访问它。
事例演示:enum语法
1 public enum QQState //枚举成员默认为Int32类型,也可以自己定义.冒号+整数类型除 2 { 3 OnLine = 1, //默认从0,也可以指定数值 4 OffLine, //数值按递增1的顺序.--2 5 Leave, //3 6 Busy, 7 QMe //5 8 }; 9 10 //定义QQ在线状态的枚举,
enum、int、string之间的相互转换
1 //定义枚举变量 2 QQState enumVariable = QQState.OffLine; 3 4 //枚举转字符串 5 string enumStringOne = enumVariable.ToString();//效率低,不推荐.==>OffLine 6 string enumStringTwo = Enum.GetName(typeof(QQState), enumVariable);//推荐==>OffLine enumVariable也可以换成数值 2 7 8 //枚举转int 9 int enumValueOne = (int)enumVariable; //==> 2 10 int enumValueTwo = enumVariable.GetHashCode();//HashCode-哈希代码,枚举成员转换成枚举成员的值. 11 int enumValueThree = Convert.ToInt32(enumVariable);//==> 2 12 13 //字符串转枚举 14 QQState enum1 = (QQState)Enum.Parse(typeof(QQState), enumStringOne); //==>OffLine 15 QQState enum2 = (QQState)Enum.Parse(typeof(QQState), "4"); //枚举成员值加双引号 ==>Busy 16 17 //字符串转值 18 int num1 = (int)Enum.Parse(typeof(QQState), enumStringOne); //==>2 19 20 //值转枚举 21 QQState enum2 = (QQState)5; //已知数值和枚举名,求出值所指的枚举值 ==>Qme 22 QQState enum3 = (QQState)Enum.ToObject(typeof(QQState), 4); //==>Busy 23 24 //值转字符串 25 string enumStringThree = Enum.GetName(typeof(QQState), enum2);
示例演示如何使用Enum.CompareTo 方法
1 /// <summary> 2 /// 记录各种车的车门个数. 3 /// </summary> 4 public enum VehicleDoors //车门 5 { 6 Motorbike = 0, //摩托车 7 Sportscar = 2, //跑车 8 Sedan = 4, //轿车 9 Hatchback = 5 //厢车 10 }; 11 12 //声明枚举类型的变量. 13 VehicleDoors myVeh = VehicleDoors.Sportscar; 14 VehicleDoors yourVeh = VehicleDoors.Motorbike; 15 VehicleDoors otherVeh = VehicleDoors.Sedan; 16 //该示例显示以下输出: 17 // Sportscar比Motorbike有更多的门吗? 18 //是的 19 // 20 //Sportscar比Sedan有更多的门吗? 21 //不 22 23 Console.WriteLine("Does a {0} have more doors than a {1}?", myVeh, yourVeh); 24 //Environment.NewLine和 “\r\n” 回车换行的作用类似 25 Console.WriteLine("{0}{1}", myVeh.CompareTo(yourVeh) > 0 ? "Yes" : "No", Environment.NewLine); 26 Console.WriteLine("Does a {0} have more doors than a {1}?", myVeh, otherVeh); 27 Console.WriteLine("{0}", myVeh.CompareTo(otherVeh) > 0 ? "Yes" : "No");//三目运算符返回"Yes" 还是 "No"
示例演示Enum.Parse、Enum.GetName、Enum.GetName方法
1 public enum Colors 2 { 3 Red, //红色 4 Green, //绿色 5 Blue, //蓝色 6 Yellow //黄色 7 }; 8 9 10 public enum Styles 11 { 12 Plaid = 2, //格纹 13 Striped = 4, //条文 14 Tartan = 6, //格子呢绒 15 Corduroy = 8 //灯芯绒 16 }; 17 18 19 string colorName = Enum.GetName(typeof(Colors), 3); //返回string类型,枚举元素名字 20 Console.WriteLine("颜色枚举的第四个值为 {0}", colorName); 21 22 /*初识foreach循环用于列举出集合中所有的元素 23 * foreach语句中的表达式由关键字in隔开的两个项组成。in右边的项是集合名 24 * in左边的项是变量名,用来存放该集合中的每个元素。 25 * 该循环的运行过程如下:每一次循环时,从集合中取出一个新的元素值。 26 * 放到只读变量中去,如果括号中的整个表达式返回值为true,foreach块中的语句就能够执行。 27 * 一旦集合中的元素都已经被访问到,整个表达式的值为false,控制流程就转入到foreach块后面的执行语句。 28 */ 29 foreach (var name in Enum.GetNames(typeof(Styles))) 30 { 31 Console.WriteLine("样式枚举基数是{0}对应的枚举名字{1}{2}", 32 (int)Enum.Parse(typeof(Styles),name),name,"\r\n"); 33 //Type type = name.GetType(); 34 //Console.WriteLine("我是什么类型{0}", type); 35 }
c# 之Enum--枚举
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。