Como Enumerar um Enum em C#

Payel Ganguly 12 outubro 2023
  1. Enum.GetNames() Método para enumerar o enum
  2. Enum.GetValues() Método para enumerar o enum em C#
  3. Mais exemplos
  4. Observações:
Como Enumerar um Enum em C#

Este tutorial introduz como enumerar um tipo enum em C# e o demonstra através de algumas listas de exemplos de código.

No tutorial anterior, aprendemos como recuperar o valor int a partir do enum utilizando C#. Como mencionado no último tutorial, Enumeração ou enum é um tipo de valor definido pelo usuário que define um array de constantes nomeadas do tipo inteiro subjacente.

Sabemos que a sintaxe comum para o enum é a seguinte:

enum<enum_name> { enumeration_list }
;

enum_name especifica o nome do tipo de enumeração, e enumeration_list especifica uma lista de identificadores separados por vírgulas.

A seguir, veremos como fazer um loop through ou enumerar todos os valores do enum em C#. Há várias maneiras de enumerar um enum. Os exemplos a seguir ilustrarão estas formas.

Enum.GetNames() Método para enumerar o enum

O objetivo é obter um array de nomes das constantes na enumeration_list utilizando o método Enum.GetName(). Ele imprime a array de nomes utilizando o laço foreach.

using System;

public class Example1 {
  public enum Fruits { Apple, Banana, Orange, Watermelon, Mango, Strawberry }

  public static void Main() {
    foreach (string fruit in Enum.GetNames(typeof(Fruits))) {
      Console.WriteLine(fruit);
    }
  }
}

Resultado:

Apple Banana Orange Watermelon Mango Strawberry

Enum.GetValues() Método para enumerar o enum em C#

Outra abordagem é utilizar o método Enum.GetValues() que recupera um array de valores constantes na lista de enumeração. Ele também imprime cada valor utilizando o foreach loop.

using System;

public class Example2 {
  public enum Subjects { Maths, Biology, English, Chemistry, Physics, History }

  public static void Main() {
    foreach (Subjects sub in Enum.GetValues(typeof(Subjects))) {
      Console.WriteLine(sub);
    }
  }
}

Resultado:

Maths Biology English Chemistry Physics History

Vamos discutir mais alguns exemplos para obter um quadro completo da utilização do método Enum.GetValues().

Mais exemplos

Exemplo 1:

using System;

public class Demo1 {
  enum Colors { White, Black, Red, Green, Blue }
  ;
  enum Planets { Earth = 0, Jupiter = 10, Saturn = 20, Mars = 30, Venus = 40 }
  ;

  public static void Main() {
    Console.WriteLine("The list of Colors Enum are:");
    foreach (int i in Enum.GetValues(typeof(Colors))) Console.WriteLine(i);

    Console.WriteLine();

    Console.WriteLine("The list of Planets Enum are:");
    foreach (int i in Enum.GetValues(typeof(Planets))) Console.WriteLine(i);
  }
}

Resultado:

The list of Colors Enum are : 0 1 2 3 4

    The list of Planets Enum are : 0 10 20 30 40

Na primeira parte do exemplo acima, os elementos da array são ordenados pelos valores binários (ou seja, os valores não assinados) das constantes de enumeração.

Exemplo 2:

using System;

enum SignValue { NegativeVal = -1, ZeroVal = 0, PositiveVal = 1 }
;

public class MainValue {
  public static void Main() {
    foreach (var val in Enum.GetValues(typeof(SignValue))) {
      Console.WriteLine("{0,3} 0X{0:X8} {1}", (int)val, ((SignValue)val));
    }
  }
}

Resultado:

0 ZeroVal 0X00000000 1 PositiveVal 0X00000001 - 1 NegativeVal 0XFFFFFFFF

O exemplo acima mostra informações sobre o array retornado pelo método Enum.GetValues() para a lista de enumeração que inclui valores zero, negativos e positivos.

Observações:

O método Enum.GetValues() devolve um array que contém um valor para cada elemento do enum. Se vários elementos tiverem o mesmo valor, o array gerado inclui valores duplicados. Neste caso, chamar o método Enum.GetNames() com cada valor no array retornado não restaura os nomes exclusivos atribuídos aos elementos que têm valores duplicados. Para recuperar os nomes de todos os membros da enumeração com sucesso, recomendamos chamar o método Enum.GetNames().

Artigo relacionado - Csharp Enum