首页 > 代码库 > Enum:枚举
Enum:枚举
原文: Enum:枚举
枚举 (enum) 是值类型的一种特殊形式,它从 System.Enum 继承而来,并为基础的基元类型的值提供替代名称。枚举类型有名称、基础类型和一组字段。基础类型必须是一个内置的有符号(或无符号)整数类型(如 Byte、Int32 或 UInt64)。字段是静态文本字段,其中的每一个字段都表示常数。同一个值可以分配给多个字段,出现这种情况时,必须将其中某个值标记为主要枚举值,以便进行反射和字符串转换。
enum 关键字用于声明枚举,即一种由一组称为枚举数列表的命名常量组成的独特类型。每种枚举类型都有基础类型,该类型可以是除 char 以外的任何整型。枚举元素的默认基础类型为 int。通常枚举用来定义单选的一些场景,比如:
public enum Sex
{
/// <summary>
/// 男
/// </summary>
Male,
/// <summary>
/// 女
/// </summary>
Female
}
枚举和整型可以相互的转换,比如以下代码:
Sex sex = Sex.Female;
System.Console.WriteLine((int)sex);
System.Console.WriteLine((Sex)1);
System.Console.WriteLine((Sex)0);
默认情况下,第一个枚举数的值为 0,后面每个枚举数的值依次递增 1。代码的运行结果如图3.1.30:
图3.1.30
我们也可以指定枚举的数值表达形式:
public enum Sex
{
/// <summary>
/// 男
/// </summary>
Male=5,
/// <summary>
/// 女
/// </summary>
Female=9
}
在这样的情况下,上面的代码的结果就有点耐人寻味了。结果如图3.1.31:
图3.1.31
我们给予了枚举中不存在的值,转换竟然没有报错,因此在处理枚举和整型转换的时候程序员需要自己判断转换的结果是否正确。
更有意思的是枚举中元素的值可以定义为负数。
public enum Sex
{
/// <summary>
/// 男
/// </summary>
Male = 1,
/// <summary>
/// 女
/// </summary>
Female =-1
}
不过在使用整型转换的时候就有一定的要求:若要强制转换某个负值,必须将该值放在括号内。
Sex sex = Sex.Female;
System.Console.WriteLine((int)sex);
System.Console.WriteLine((Sex)1);
System.Console.WriteLine((Sex)(-1));