赞
踩
在c#中,枚举(enumeration)是一种数据类型,和int、double、string等类型相似。枚举用于声明一组命名的常数,当一个变量有几种可能的取值时,可以将它定义为枚举类型。例如一周有周一、周二……周日,则可定义一个枚举类型包括周一……周日七个取值。
c#中枚举的声明关键字为enum
[public] enum 枚举名
{
值1,
值2,
值3,
……
}
public:访问修饰符,公共的。可省略
enum:关键字,生命枚举类型
枚举名:符合Pascal明明规范
需要注意,枚举名一般声明在命名空间下面,因为这样可以让命名空间下面的类都可以应用到。
使用枚举时和其他数据类型一样:变量类型 变量名=值
举例子
using System; namespace demo_1 { //声明枚举类Week public enum Week { 星期一, 星期二, 星期三, 星期四, 星期五, 星期六, 星期日, } class Program { static void Main(string[] args) { //使用枚举 变量类型 变量名=值 Week week = Week.星期一; Console.WriteLine(week); } } }
这样就输出了枚举中的“星期一”。
枚举类和int类型时兼容的,可以相互转换。
举例子
using System; namespace demo_1 { public enum Week { 星期一, 星期二, 星期三, 星期四, 星期五, 星期六, 星期日, } class Program { static void Main(string[] args) { Console.WriteLine((int)Week.星期一); } } }
输出0
继续测试
using System; namespace demo_1 { public enum Week { 星期一, 星期二, 星期三, 星期四, 星期五, 星期六, 星期日, } class Program { static void Main(string[] args) { Console.WriteLine((int)Week.星期一); Console.WriteLine((int)Week.星期二); Console.WriteLine((int)Week.星期三); Console.WriteLine((int)Week.星期四); Console.WriteLine((int)Week.星期五); } } }
输出
改写枚举中的星期一为星期一=2,继续测试:
using System; namespace demo_1 { public enum Week { 星期一 = 2,//改写了 星期二, 星期三, 星期四, 星期五, 星期六, 星期日, } class Program { static void Main(string[] args) { Console.WriteLine((int)Week.星期一); Console.WriteLine((int)Week.星期二); Console.WriteLine((int)Week.星期三); Console.WriteLine((int)Week.星期四); Console.WriteLine((int)Week.星期五); } } }
输出
总结:枚举类型默认是跟int类型互相兼容的,所以可以通过强制转换的语法互相转换,并且枚举转int时,枚举中的第一个量为0,其余一次递增。若给枚举中的量赋值,则转int时输出为赋给值,其余再次基础上依次递增。当转换一个枚举中没有的值的时候,不会抛异常,会将数字直接显示出来。int转枚举同理
double、float、decmial等同理。
举例子
using System; namespace demo_1 { public enum Week { 星期一, 星期二, 星期三, 星期四, 星期五, 星期六, 星期日, } class Program { static void Main(string[] args) { int n = 1; Console.WriteLine((Week)n); } } }
输出星期二
将n改为8,继续测试
using System; namespace demo_1 { public enum Week { 星期一, 星期二, 星期三, 星期四, 星期五, 星期六, 星期日, } class Program { static void Main(string[] args) { int n = 8;//改为8 Console.WriteLine((Week)n); } } }
输出8
使用ToString()
举例子
using System; namespace demo_1 { public enum Week { 星期一, 星期二, 星期三, 星期四, 星期五, 星期六, 星期日, } class Program { static void Main(string[] args) { Week week = Week.星期一; Console.WriteLine(week.ToString()); } } }
输出字符串星期一
使用Enum.Parse(typeof(枚举名),要转换的字符串)
。注意,不存在Convert.ToEnum()
举例子
using System; namespace demo_1 { public enum Week { 星期一, 星期二, 星期三, 星期四, 星期五, 星期六, 星期日, } class Program { static void Main(string[] args) { string s = "0"; Week week = (Week)Enum.Parse(typeof(Week), s); Console.WriteLine(week); } } }
输出星期一
令s = “8”,继续测试
using System; namespace demo_1 { public enum Week { 星期一, 星期二, 星期三, 星期四, 星期五, 星期六, 星期日, } class Program { static void Main(string[] args) { string s = "8";//改成8 Week week = (Week)Enum.Parse(typeof(Week), s); Console.WriteLine(week); } } }
输出8
将s改为星期一,继续测试
输出星期一
将s改为星期八,继续测试
抛出异常
总结:枚举和string类型不兼容。字符串转枚举时,如果转换字符串是数字,即使枚举中没有该值,也不会抛出异常。如果转换的字符串是文本,如果枚举中没有则会抛出异常。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。