 C# 枚举(Enum)
C# 枚举(Enum)
  在C#中,枚举(Enum)是一种用于定义具有离散值的命名常量的数据类型。枚举可以使代码更加清晰和易于阅读,同时也可以帮助避免常量值的硬编码错误。
# 声明枚举
要声明枚举,可以使用以下语法:
enum <name>
{
    <value1>,
    <value2>,
    ...
}
<name>是枚举类型的名称,<value1>,<value2>等是枚举值。例如,以下代码定义了一个名为Colors的枚举,其中包含三个值:
enum Colors
{
    Red,
    Green,
    Blue
}
在上面的示例中,Red,Green和Blue都是枚举值,它们对应于0,1和2的整数值。如果没有显式地指定枚举值,则第一个枚举值的默认值为0,其余枚举值的默认值将依次递增。
# 使用枚举
一旦声明了枚举,就可以使用它来定义变量、参数和返回类型。例如,以下代码定义了一个名为color的变量,其类型为Colors枚举:
Colors color = Colors.Red;
在上面的示例中,color的初始值为Colors.Red,即枚举值Red。
可以使用switch语句来处理枚举值,例如:
switch (color)
{
    case Colors.Red:
        Console.WriteLine("The color is red.");
        break;
    case Colors.Green:
        Console.WriteLine("The color is green.");
        break;
    case Colors.Blue:
        Console.WriteLine("The color is blue.");
        break;
    default:
        Console.WriteLine("Unknown color.");
        break;
}
在上面的示例中,根据color的值,将输出不同的消息。
# 指定枚举值
在声明枚举时,可以显式地指定枚举值。例如,以下代码定义了一个名为DaysOfWeek的枚举,其中包含七个值,每个值分别对应一周中的一天:
enum DaysOfWeek
{
    Monday = 1,
    Tuesday,
    Wednesday,
    Thursday,
    Friday,
    Saturday,
    Sunday
}
在上面的示例中,Monday的值为1,而Tuesday的值为2,以此类推。
可以使用枚举值的名称或其整数值来访问枚举值。例如,以下代码将dayOfWeek变量的值设置为DaysOfWeek.Tuesday:
DaysOfWeek dayOfWeek = DaysOfWeek.Tuesday;
# 枚举转换
可以将枚举类型转换为整数类型,也可以将整数类型转换为枚举类型。例如,以下代码将枚举类型Colors的值转换为整数类型:
int colorValue = (int)Colors.Red;
在上面的示例中,colorValue的值为0,因为Colors.Red的整数值为0。
可以使用Enum.Parse方法将字符串值转换为枚举值。例如,以下代码将字符串值"Green"转换为Colors枚举值:
Colors color = (Colors)Enum.Parse(typeof(Colors), "Green");
# 示例代码
以下是一个完整的示例,演示了如何声明、使用和转换枚举类型:
using System;
enum Colors
{
    Red,
    Green,
    Blue
}
enum DaysOfWeek
{
    Monday = 1,
    Tuesday,
    Wednesday,
    Thursday,
    Friday,
    Saturday,
    Sunday
}
class Program
{
    static void Main(string[] args)
    {
        // Declare a variable of type Colors
        Colors color = Colors.Red;
        // Display the value of the variable
        Console.WriteLine("The color is {0}.", color);
        // Declare a variable of type DaysOfWeek
        DaysOfWeek dayOfWeek = DaysOfWeek.Tuesday;
        // Display the value of the variable
        Console.WriteLine("Today is {0}.", dayOfWeek);
        // Convert an enum value to an integer
        int colorValue = (int)Colors.Green;
        Console.WriteLine("The value of Green is {0}.", colorValue);
        // Convert a string to an enum value
        Colors colorFromString = (Colors)Enum.Parse(typeof(Colors), "Blue");
        Console.WriteLine("The value of Blue is {0}.", colorFromString);
    }
}
输出:
The color is Red.
Today is Tuesday.
The value of Green is 1.
The value of Blue is Blue.
在上面的示例中,声明了两个枚举类型Colors和DaysOfWeek。然后,定义了一个变量color,其类型为Colors枚举,并将其值设置为Colors.Red。接下来,定义了一个变量dayOfWeek,其类型为DaysOfWeek枚举,并将其值设置为DaysOfWeek.Tuesday。然后,演示了如何将枚举值转换为整数类型和将字符串值转换为枚举值。
