如何enumerate C#enum

Enums在C# 语言中被广泛使用。

在enumerateenum ,有4种方法可以在C#

1.在.Net 5及以上版本中使用C# Enum.GetValues() 。 2.在旧的.Net版本中使用C# Enum.GetValues() 。 3.使用C# Enum.GetNames() ,将enum,将enum 的名称作为字符串。 4.使用Linq

让我们通过一个例子来进一步了解它。

首先,我们将创建一个C# enum

public enum LogLevel
{
   ERROR, 
   WARN, 
   INFO, 
   DEBUG
}

enum代表不同类型的日志级别。

现在我们将看到不同的方式来enumerate the C# enum.

在.Net 5及以上版本中使用C# Enum.GetValues() 通用方法

如果你使用最新版本的.Net ,即.Net 5 及以上版本,你可以使用通用版本的Enum.GetValues 方法来enumerate the 。 C# enum.

void loopEnum()
{
   LogLevel[] logLevels = Enum.GetValues<LogLevel>();
   
   foreach (LogLevel logLevel in logLevels)
   {
        Console.WriteLine(logLevel.ToString());
   }
}

新的通用版本的Enum.GetValues 返回数组的enum 值。

此外,我们还可以使用forforeach 语句来列出 C# enum名称。

由于数组包含 enum类型,我们需要使用ToString() 方法将其转换为字符串。

在旧的.Net版本中使用C# Enum.GetValues()

在旧版本的.Net ,没有可用的通用方法,Enum.GetValues() 方法。

你需要把typeof() enum 作为一个参数传给Enum.GetValues() 方法。

Array logLevels = Enum.GetValues(typeof(LogLevel))

它返回enum 类型的值System.Array ,然后我们可以使用foreach 语句来循环浏览这些 C# enum名称。

void loopEnum()
{
   Array logLevels = Enum.GetValues(typeof(LogLevel))
   foreach (LogLevel logLevel in logLevels)
   {
        Console.WriteLine(logLevel.ToString());
   }
}

如果你想要IEnumerable 的结果,我们可以进一步使用Enum.GetValues() 方法。

void loopEnum()
{
   var logLevels = Enum.GetValues(typeof(LogLevel)).Cast<LogLevel>();
   foreach (LogLevel logLevel in logLevels)
   {
        Console.WriteLine(logLevel.ToString());
   }
}

使用C# Enum.GetNames() ,将enum,将enum ,将名字作为字符串。

C# Enum.GetValues() 方法返回数组的enum 类型。

这就是为什么我们在将enum 名称打印在控制台之前将其转换为字符串。

使用C# Enum.GetNames() 方法,我们可以将enumerateenum 名称作为字符串,这样就不需要将它们转换为字符串。

如果你使用的是.Net 5 及以上,你可以使用通用的C# Enum.GetNames() 函数。

void loopEnum()
{
   string[] logLevels = Enum.GetNames<LogLevel>();
   
   foreach (string logLevel in logLevels)
   {
        Console.WriteLine(logLevel);
   }
}

在旧版本中,我们需要传递typeof() enum 参数。

void loopEnum()
{
   string[] logLevels = Enum.GetNames(typeof(LogLevel));
   foreach (string logLevel in logLevels)
   {
        Console.WriteLine(logLevel);
   }
}

因此,如果你想把enumerate names作为字符串,我们可以使用C# Enum.GetNames() 方法。

使用Linq

我们可以使用Linq forEach 方法来enumerate C#enum ,在Enum.GetValues()Enum.GetNames() 方法的帮助下。

.Net 5 及以上版本中使用下面的代码片段。

//Using Enum.GetValues
Enum.GetValues<LogLevel>()
        .ToList()
        .ForEach(loglevel => Console.WriteLine(loglevel.ToString()));

//Using Enum.GetNames
Enum.GetNames<LogLevel>()
        .ToList()
        .ForEach(loglevel => Console.WriteLine(loglevel));        

在旧版本中

//Using Enum.GetValues
Enum.GetValues(typeof(LogLevel))
    .Cast<LogLevel>().ToList()
    .ForEach(loglevel => Console.WriteLine(loglevel.ToString()));

//Using Enum.GetNames
Enum.GetNames(typeof(LogLevel))
    .ToList()
    .ForEach(loglevel => Console.WriteLine(loglevel));    

摘要

在本教程中,我们学习了在C#中使用Enum.GetValues()Enum.GetNames() 方法,enumerateenum 。