How to enumerate an enum?

.net, c#, enumeration, enums, loops

Solution

Update: If you're using .NET 5 or newer, use this solution.

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

Note: The cast to `(Suit[])` is not strictly necessary, but it does make the code 0.5 ns faster.

Problem

How can you enumerate an `enum` in C#? E.g. the following code does not compile: ``` public enum Suit { Spades, Hearts, Clubs, Diamonds } public void EnumerateAllSuitsDemoMethod() { foreach (Suit suit in Suit) { DoSomething(suit); } } ``` And it gives the following compile-time error: 'Suit' is a 'type' but is used like a 'variable' It fails on the `Suit` keyword, the second one.

Original source

Related problems