C# - Iterando através de uma enumeração


 Neste artigo vamos recordar como iterar através de uma enumeração na linguagem C#.

O tipo enum é um dos recursos comuns que usamos em muitas implementações. Enquanto a declaração e a utilização de um enum parace ser muito simples como podemos iterar sobre uma enumeração na linguagem C#.

Se você demorou mais de 5 segundos para responder talvez tenha percebido que não é tão simples assim ou talvez sejam tantas as opções que você não sabia qual usar.

Então vamos lá...

A classe Enum fornece a classe base para enumerações e o método Enum.GetNames() é usado para recuperar uma matriz dos nomes e retorna um array de string de nomes.

Vamos entender isso usando um exemplo bem simples.

Considere a seguinte Enumeração definida

     enum DiasUteis
     {
            Segunda,
            Terça,
            Quarta,
            Quinta,
            Sexta
     }

Usando o método Enum.GetNames() podemos iterar sobre a enumeração :

       static void Main(string[] args)
        {
            foreach (var item in Enum.GetNames(typeof(DiasUteis)))
            {
                Console.WriteLine(item);
            }
        }

O método Enum.GetNames() requer que seja passado o tipo enum como parâmetro, e, podemos fazer isso usando a palavra-chave typeof.

O retorno será um array de nomes da enumeração DiasUteis:

 

Em uma outra abordagem podemos usar o método Enum.GetValues() para obter o mesmo resultado:

       static void Main(string[] args)
        {
            foreach (var item in Enum.GetValues(typeof(DiasUteis)))
            {
                Console.WriteLine(item);
            }
        }

Ambos os métodos funcionam. Mas qual a diferença ???

Diferença entre Enum.GetNames() e Enum.GetValues()

O método GetNames() vai retornar um array de strings dos nomes para os itens na enumeração enquanto GetValues() vai retornar um array dos valores para cada item na Enum.

Entendeu ???

Bem, quando definimos uma enumeração, todos os elementos da Enum terão valores atribuídos a partir do zero (0).

Assim, no exemplo acima, Segunda terá o valor zero atribuido e Sexta terá o valor 4.

Agora, pense nesta enumeração como pares Nome e Valor. Assim teremos:  Segunda-feira = 0, Terça-feira = 1, Quarta-feira = 2, Quinta-feira = 3, Sexta-feira = 4

Então, com, GetNames() teremos uma matriz de string contendo os itens "segunda-feira", "terça-feira" .... .... "Sexta-feira" ... por outro lado, quando usamos, GetValues() iremos obter uma matriz de inteiros contendo os valores 0,1,2,3,4.

E assim podemos fazer o código funcionar assim:

       static void Main(string[] args)
        {
            foreach (var item in Enum.GetValues(typeof(DiasUteis)))
            {
                Console.WriteLine(Convert.ToInt32(item));
            }
        }

O resultado obtido pode se visto abaixo:

Entendeu agora !!!

Disse-lhe Jesus: Eu sou o caminho, e a verdade e a vida; ninguém vem ao Pai, senão por mim.
João 14:6

Veja os Destaques e novidades do SUPER DVD Visual Basic (sempre atualizado) : clique e confira !

Quer migrar para o VB .NET ?

Quer aprender C# ??

Quer aprender os conceitos da Programação Orientada a objetos ?

Quer aprender o gerar relatórios com o ReportViewer no VS 2013 ?

Referências:


José Carlos Macoratti