C# - 枚举类型

本文关键字:类型 枚举 | 更新日期: 2023-09-12 17:38:16

在 C# 中,enum(或枚举类型)用于将常量名称分配给一组数字整数值。 它使常量值更具可读性,例如,当引用一周中的某一天时,WeekDays.Monday比数字 0 更具可读性。

enum是使用 enum 关键字直接在命名空间、类或结构中定义的。 所有常量名称都可以在大括号内声明,并用逗号分隔。 下面定义了工作日的enum

Example: Define an Enum

enum WeekDays
{
    Monday,
    Tuesday,
    Wednesday,
    Thursday,
    Friday,
    Saturday,
    Sunday
}

上面,WeekDays枚举在每行中声明成员,用逗号分隔。

枚举值

如果未将值分配给enum成员,则编译器会将整数值分配给默认情况下从零开始的每个成员。 enum的第一个成员将为 0,并且每个连续枚举成员的值增加 1。

Example: Default Enum Values

enum WeekDays
{
    Monday,     // 0
    Tuesday,    // 1
    Wednesday,  // 2
    Thursday,   // 3
    Friday,     // 4
    Saturday,   // 5
    Sunday      // 6
}

您可以为枚举成员分配不同的值。 枚举成员默认值的更改将自动按顺序将增量值分配给其他成员。

Example: Assign Values to Enum Members

enum Categories
{
    Electronics,    // 0
    Food,           // 1
    Automotive = 6, // 6
    Arts,           // 7
    BeautyCare,     // 8
    Fashion         // 9
}

您甚至可以为每个成员分配不同的值。

Example: Assign Values to Enum Members

enum Categories
{
    Electronics = 1,  
    Food = 5, 
    Automotive = 6, 
    Arts = 10, 
    BeautyCare = 11, 
    Fashion = 15,
    WomanFashion = 15
}

枚举可以是任何数字数据类型,例如字节、字节、短、短、整、长或长。 但是,枚举不能是字符串类型。

将枚举名称后面的类型指定为 : type 。下面定义了字节枚举。

Example: byte Enum

enum Categories: byte
{
    Electronics = 1,  
    Food = 5, 
    Automotive = 6, 
    Arts = 10, 
    BeautyCare = 11, 
    Fashion = 15
}

访问枚举

可以使用点语法访问enumenum.member

Example: Access Enum

enum WeekDays
{
    Monday, 
    Tuesday,
    Wednesday,
    Thursday, 
    Friday, 
    Saturday,
    Sunday 
}
Console.WriteLine(WeekDays.Monday); // Monday
Console.WriteLine(WeekDays.Tuesday); // Tuesday
Console.WriteLine(WeekDays.Wednesday); // Wednesday
Console.WriteLine(WeekDays.Thursday); // Thursday
Console.WriteLine(WeekDays.Friday); // Friday
Console.WriteLine(WeekDays.Saturday); // Saturday
Console.WriteLine(WeekDays.Sunday); // Sunday

转换

显式强制转换需要从 enum 类型转换为其基础整型类型。

Example: Enum Conversion

enum WeekDays
{
    Monday, 
    Tuesday,
    Wednesday,
    Thursday, 
    Friday, 
    Saturday,
    Sunday 
}
Console.WriteLine(WeekDays.Friday); //output: Friday 
int day = (int) WeekDays.Friday; // enum to int conversion
Console.WriteLine(day); //output: 4 
		
var wd = (WeekDays) 5; // int to enum conversion
Console.WriteLine(wd);//output: Saturday 

enum是一个抽象类。 了解有关枚举类成员的更多信息 这里.