在 C#
中, enum
是一种特殊的值类型,它允许你为一组相关的常量定义一个名称。枚举提供了一种将一组整数值与更易读的名称关联起来的方法。
定义枚举
你可以使用 enum
关键字来定义枚举类型。枚举类型默认是基于 int
的,但你也可以指定不同的整型基础,如 byte
、sbyte
、short
、long
等。
csharp
// 默认基于int的枚举
public enum Color
{
Red,
Green,
Blue
}
// 基于byte的枚举
public enum Size : byte
{
Small,
Medium,
Large
}
使用枚举
在代码中,你可以像使用常量一样使用枚举成员:
csharp
Color myColor = Color.Blue;
Size mySize = Size.Medium;
访问枚举值
你可以通过调用 ToString()
方法或使用 +
运算符来获取枚举成员的名称或值:
csharp
Console.WriteLine(myColor.ToString()); // 输出 "Blue"
Console.WriteLine((int)myColor); // 输出 "2"
枚举与switch
语句
枚举类型非常适合在 switch
语句中使用:
csharp
switch (myColor)
{
case Color.Red:
Console.WriteLine("The color is red.");
break;
case Color.Green:
Console.WriteLine("The color is green.");
break;
case Color.Blue:
Console.WriteLine("The color is blue.");
break;
}
枚举特性
枚举值是常量,编译时常量值就已经确定。
枚举默认从0
开始,但你可以指定不同的起始值。
枚举成员的值可以是任何整型,包括负数。
csharp
public enum StatusCode
{
OK = 0,
NotFound = -1,
Error = -2
}
枚举与位字段
枚举还可以用于位字段(bit fields
),通过使用 [Flags]
特性,可以将枚举成员作为位标志来使用:
csharp
[Flags]
public enum Permissions
{
None = 0,
Read = 1,
Write = 2,
Execute = 4
}
Permissions myPermissions =
Permissions.Read | Permissions.Write;
使用 [Flags]
特性的枚举可以很容易地进行位运算,如 OR
、AND
、NOT
等。
总结
枚举是C#
中非常有用的语言特性,可以提高代码的可读性和可维护性。