上QQ阅读APP看书,第一时间看更新
4.6 枚举
枚举类型是一种特殊的值类型,它用于声明一组具有相同性质的常量。
System.Enum类型是所有枚举类型的抽象基类,并且从System.Enum继承的成员在任何枚举类型中都可用。System.Enum本身并不是枚举类型。相反,它是一个类类型,所有枚举类型都是从它派生的。System.Enum从类型System.ValueType派生。
4.6.1 枚举的声明
在C#中使用enum关键字声明枚举,其语法格式如下:
访问修饰符 enum enumName: 基本类型 { list1=vlaue1, list2=value2, list3=value3, … listN=valueN }
其中,enumName为枚举名,基本类型必须能够表示该枚举中定义的所有枚举数值。枚举声明可以显式地声明byte、sbyte、short、ushort、int、uint、long或ulong类型作为对应的基本类型。没有显式地声明基本类型的枚举声明意味着所对应的基本类型是int。大括号中为枚举值列表,任意两个枚举成员不能具有相同的名称。每个枚举成员均具有相关联的常数值。此值的类型就是枚举的基本类型。每个枚举成员的常数值必须在该枚举的基本类型的范围之内。若不对其进行赋值,默认情况下,第一个枚举的值为0,后面的枚举值依次递增1。
下面的代码片段演示了枚举类型的声明。
public enum Times { Morning = 1, Afternoon = 2, Evening = 3 }
4.6.2 枚举类型与基本类型的转换
基本类型不能隐式转换为枚举类型,而枚举类型也不能隐式转换为基础类型,枚举类型与基本类型之间的转换,要使用强制类型转换。下面的例子演示了对枚举类型的基本操作。
例4-8:枚举类型与基本类型的转换(ConsoleEnumConvert)
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace ConsoleEnumConvert { class Program { static void Main(string[] args) { Weekday weekday = Weekday.Monday; Console.WriteLine("今天是:\t\t" + weekday); weekday++; Console.WriteLine("\n明天是:\t\t" + weekday); weekday = (Weekday)4; Console.WriteLine("\n大后天是:\t\t" + weekday); int friday = (int)Weekday.Friday ; Console.WriteLine("\n星期五转换为数字为:\t" + friday); Console.ReadLine(); } enum Weekday { Sunday, Monday, Tuesday, Wednesday, Thursday, Friday, Saturday } } }
运行结果如图4-8所示。
图4-8 枚举类型与基本类型的转换