C# Enum 是一种用户定义的数据类型,它包含一个名为“枚举器列表”的命名常量值列表。Enum 或 enumerator 是一个值类型。建议直接在命名空间下定义 Enum。它也可以嵌套在类或结构体中。
C# enum 或 enumerator 的语法如下所示。
[<Access Modifiers>] enum <Name> [: <type>]
{
--list of named constant values--
}
例如
public enum Technologies
{
C, SQL, Dot Net, Java
}
在这里,访问修饰符是 public,并且将创建一个名为 Technologies 的 Enum。
类型可以是任何整数类型(int, short, long, uint, ulong, byte, ushort, sbyte),但默认是 int。
让我们来操作上面创建的 C# Enum 枚举器。
using System;
namespace CSharp_Tutorial
{
public enum Technologies
{
C, SQL, DotNet, Java //by default the sequence is C=0, SQL=1, DotNet=2....
}
class Program
{
static void Main()
{
Console.ForegroundColor = ConsoleColor.DarkRed;
Technologies t = 0; //0 is to get the first item of enum list Technologies
t = (Technologies)1;//other than first item all the items in the list
//are converted to enum type(technologies) while using
Console.WriteLine("The 1st and 2nd items are {0}, {1}", 0, (Technologies)1);
}
}
}

正如我们已经讨论过的,Enum 必须直接在命名空间下定义。并且代码在 Main() 方法中。
要打印 C# 枚举列表 Technologies 中的第一项,我们可以直接使用 0。Technologies t = 0
但是其余项应通过转换为 enum 类型 Technologies 来调用,即 t = (Technologies)1。
在这里,t 是 Technologies 类型的变量。
最后,它会打印出枚举列表 Technologies 中的第一项和第二项。
Foregroundcolor 和 Backgroundcolor 是 System 命名空间中 Console 类的属性。相比之下,Consolecolor 是不同颜色的枚举列表。
C# Enum 或 Enumerator 示例
让我们通过实践来看看 Enum 或 Enumerator 的用法。
using System;
namespace CSharp_Tutorial
{
public enum Days
{
Monday = 1, Tuesday = 2, Wednesday = 3, Thursday = 4, Friday = 5
}
class Program
{
public static Days MeetingDate { get; set; } = (Days)4;
static void Main()
{
Console.BackgroundColor = ConsoleColor.Blue;
Console.WriteLine("Default date is {0} ", MeetingDate);
MeetingDate = Days.Monday;
Console.WriteLine("Meeting Date changed to {0} ", MeetingDate);
}
}
}
输出

ConsoleColor 是系统定义的 Enum,而 Days 是用户定义的 Enum。
Enum Days 列表中包含所有工作日,每个工作日都用某个用户定义的数字进行初始化。
在这里,我们只是创建了一个名为 MeetingDate 的属性,其类型为 Days,并为其分配了默认值 4,即默认的 MeetingDate 是星期四。
在 Enum 或 enumerator 示例的 Main() 代码中,
当我们尝试更改 MeetingDate 时,它会提示我们选择枚举器列表 Days 中的值。并且不允许我们给出列表之外的值。例如,星期六。
注意:因此,Enum 限制用户只能从支持的特定列表中选择项目,即用户不能选择 Enum 列表之外的值。