路漫漫其修远兮,吾将上下而求索。 ——屈原《离骚》
枚举的定义与使用
- 在 C# 中,枚举是一种用户定义的值类型,用于为一组相关的常量值定义一个命名集合,使代码更具可读性和可维护性
- 枚举通过
enum 关键字声明,例如如下代码
1 2 3 4 5 6
| enum Weekday { Monday, Tuesday, Wednesday, Thursday }
|
- 在访问枚举成员时,需要先将变量的类型指定为要访问的枚举名,而后通过类似于访问对象属性的方式访问枚举成员
1 2 3 4 5 6 7
| enum State { Run, Sleep, Die } State playerState = State.Run; Console.WriteLine(playerState);
|
枚举的成员值
- 枚举的每个成员默认对应一个整数,这个整数从0开始递增
1 2 3 4 5 6
| enum Season { Spring, Summer, Autumn, Winter }
|
- 可以为枚举成员显式指定值,部分指定值时,未指定的成员会在前一个成员值的基础上加 1
1 2 3 4 5 6 7 8
| enum Status { Pending = 1, Approved, Rejected, Canceled = 10, Completed }
|
枚举的底层类型
- 默认情况下,枚举的底层类型是 int,但也可以指定为其他整数类型
1 2 3 4 5
| enum Priority:byte { Low = 1, Medium = 2, High = 3 }
|
可空类型的常用属性
可空类型提供两个重要属性来判断和获取值:
- HasValue 该属性是一个布尔值,当其为
true 时表示该变量有值 (非 null),false 则表示其为 null
- Value 获取变量存储的实际值(仅当 HasValue 为
true 时有效,否则会抛出异常)
1 2 3 4 5
| byte? score = null; Console.WriteLine(score.HasValue); score = 99; Console.WriteLine(score.HasValue); Console.Write(score.Value);
|
枚举的类型转换
1 2 3 4 5 6 7 8 9 10 11
| enum Weekday { Monday, Tuesday, Wednesday };
Weekday day = Weekday.Tuesday; int dayValue = (int)day; Console.WriteLine(dayValue);
int value = 2; Weekday anotherDay = (Weekday)value; Console.WriteLine(anotherDay);
|
1 2 3
| enum Weekday { Monday, Tuesday, Wednesday }; Weekday day = Weekday.Monday; string dayName = day.ToString();
|