枚举

未分类
1.3k 词

路漫漫其修远兮,吾将上下而求索。 ——屈原《离骚》

枚举的定义与使用

  • 在 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); // Run




枚举的成员值

  • 枚举的每个成员默认对应一个整数,这个整数从0开始递增
1
2
3
4
5
6
enum Season {
Spring, // 0
Summer, // 1
Autumn, // 2
Winter // 3
}
  • 可以为枚举成员显式指定值,部分指定值时,未指定的成员会在前一个成员值的基础上加 1
1
2
3
4
5
6
7
8
enum Status
{
Pending = 1,
Approved, // 2
Rejected, // 3
Canceled = 10,
Completed // 11
}




枚举的底层类型

  • 默认情况下,枚举的底层类型是 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); // False
score = 99;
Console.WriteLine(score.HasValue); // True
Console.Write(score.Value); // 99




枚举的类型转换

  • 枚举与整数之间的转换
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); // 1

// 整数转枚举
int value = 2;
Weekday anotherDay = (Weekday)value;
Console.WriteLine(anotherDay); // Wednesday
  • 枚举转字符串
1
2
3
enum Weekday { Monday, Tuesday, Wednesday };
Weekday day = Weekday.Monday;
string dayName = day.ToString(); // 结果为 "Monday"