如何枚举一个枚举?

23 浏览
0 Comments

如何枚举一个枚举?

如何在C#中枚举enum

例如,以下代码无法编译:

public enum Suit
{
    Spades,
    Hearts,
    Clubs,
    Diamonds
}
public void EnumerateAllSuitsDemoMethod()
{
    foreach (Suit suit in Suit)
    {
        DoSomething(suit);
    }
}

它会产生以下编译时错误:

\'Suit\'是一个\'type\',但像\'variable\'一样使用。

它在第二个Suit关键字上失败。

admin 更改状态以发布 2023年5月23日
0
0 Comments

在我的看来,你应该想要打印出每个枚举的名称,而不是值。这种情况下,Enum.GetNames() 似乎是正确的方法。

public enum Suits
{
    Spades,
    Hearts,
    Clubs,
    Diamonds,
    NumSuits
}
public void PrintAllSuits()
{
    foreach (string name in Enum.GetNames(typeof(Suits)))
    {
        System.Console.WriteLine(name);
    }
}

顺便说一下,递增值不是枚举值的好方式。相反,你应该这样做。

我会使用 Enum.GetValues(typeof(Suit)) 代替。

public enum Suits
{
    Spades,
    Hearts,
    Clubs,
    Diamonds,
    NumSuits
}
public void PrintAllSuits()
{
    foreach (var suit in Enum.GetValues(typeof(Suits)))
    {
        System.Console.WriteLine(suit.ToString());
    }
}

0
0 Comments

foreach (Suit suit in (Suit[]) Enum.GetValues(typeof(Suit)))
{
}

Note: 将 (Suit[]) 转换并不是必需的,但是它确实可以使代码快 0.5 纳秒。 但有助于优化代码

0