枚举
大约 2 分钟
C#中的枚举类型(Enum)
枚举类型(Enum)是C#中一种特殊的值类型,它允许一个变量成为一组预定义的常量之一。使用枚举可以使代码更加清晰、易于理解和维护。
提示
枚举其实就是特殊的常量类,且构造方法被默认强制是私有。建议在实际开发时,枚举类名带上 Enum 后缀,枚举成员名称使用全大写,单词间用下划线隔开。
定义枚举
枚举是通过enum
关键字定义的,枚举内部是一组命名的整型常量。声明枚举的一般语法如下:
enum EnumName
{
Value1,
Value2,
Value3,
// 更多的值
}
其中,
- EnumName:是枚举的名称。
- Value1, Value2, Value3:是枚举的成员,每个成员代表一个常数值,默认从0开始自动赋值,也可以手动指定值。
例如我们要表示一周中的七天,可以定义一个名为DayOfWeek
的枚举类型::
enum DayOfWeek
{
Sunday,
Monday,
Tuesday,
Wednesday,
Thursday,
Friday,
Saturday
}
默认情况下,枚举的第一个元素的值是0,后续元素的值依次递增。
也可以手动为枚举成员指定值。
enum DayOfWeek
{
Monday = 1,
Tuesday,
Wednesday,
Thursday,
Friday,
Saturday,
Sunday,
}
使用枚举
枚举类型的变量可以被赋予枚举中定义的任何值。
DayOfWeek today = DayOfWeek.Wednesday;
Console.WriteLine(today); // 输出: Wednesday
// 使用枚举作为条件
if (today == DayOfWeek.Wednesday)
{
Console.WriteLine("It's the middle of the week.");
}
枚举类型可以与switch
语句结合使用,以便基于枚举值执行不同的操作。
switch (today)
{
case DayOfWeek.Sunday:
Console.WriteLine("Today is Sunday.");
break;
case DayOfWeek.Monday:
Console.WriteLine("Today is Monday.");
break;
// 其他情况类似...
}
枚举与整型之间的转换
枚举成员实际上是整型值(默认为int
类型),因此可以在枚举类型和整型之间进行转换。
DayOfWeek today = DayOfWeek.Wednesday;
int dayNumber = (int)today; // 枚举到整数的显式转换
Console.WriteLine(dayNumber); // 输出: 3
DayOfWeek day = (DayOfWeek)3; // 整数到枚举的显式转换
Console.WriteLine(day); // 输出: Wednesday
枚举的基础类型
默认情况下,枚举的基础类型是int
,但是可以指定枚举的基础类型为任何整型(byte
、sbyte
、short
、ushort
、int
、uint
、long
或ulong
)。
enum DayOfWeek : byte
{
Sunday,
Monday,
Tuesday,
Wednesday,
Thursday,
Friday,
Saturday
}
枚举的应用场景
枚举最常用于表示一组相关的常量值,提供了一种将一组相关的整型值与易于理解的名称相关联的方法。通过使用枚举,这使得代码更加易于阅读和维护。例如,它们可以用来表示状态、选项、配置设置等。