C# – O que são Enums3 min de leitura

Categoria: C#

Olá programadores, desenvolvedores de softwares e amantes de café! Hoje vou comentar a respeito de um recurso maravilhoso que foi implementado na .Net Framework: Enums. Se você algum dia precisou de utilizar constantes em seus softwares, sabe como é complicado manter essas “espécies” bem organizadas em um software. Além disso, a codificação fica bem estranha de se ler e entender e em alguns casos você deseja dar mais clareza ao seu código, de modo que, se algum outro programador ou você ler aquela parte do código,  entenderá rapidamente o que aquele algoritmo esta fazendo.


As Enums vieram para esta finalidade: deixar o código mais legível e lhe ajudar a criar uma espécie de grupos de constantes. Vejamos como isso funciona e como este recurso pode deixar seu código mais claro.

Enums deixando seus código em “forma”, ou melhor, legível

Vamos imaginar, que você esteja fazendo uma agenda de compromissos, em que deseja associar a cada compromisso um indicador de prioridade. Você logo pensaria: bom, vou criar três constantes, com o nome de “Normal”, “Médio” e “Alta” para destingir o nível de prioridade dos compromissos. O problema começa, com o fato de que você  terá de criar variável do tipo String e atribuir o valor padrão para cada uma das variáveis. Quando precisar de comparar o valor em um comando if ou em um switch você terá de comparar o valor com a constante e este valor terá que ter exatamente o MESMO VALOR DA CONSTANTE para que tudo funcione corretamente.Bom você deve estar pensando: qual é o problema disso? Eu diria que em partes, nenhum, mas observe que isso torna a manutenção do código um tanto complicada, neste caso você esta trabalhando com comparação de variáveis e não de tipos, que é mais elegante e torna o código-fonte menos cansativo de ler.

Ok, já entendi. Agora me mostre como isso funciona

Criar uma Enum é muito simples e sua utilização mais ainda. Vejamos primeiro como criar a Enum com o problema dado acima, ou seja,  vamos criar os indicadores de prioridade com Enum:

public enum Prioridade
{
   Normal = 1,
   Medio,
   Alta
}

Bem simples. Nesta Enum, estamos começando com o valor 1 – este valor ao lado da Enum é chamado de índice – , os demais valores são definidos internamente pela classe, em ordem crescente, ou seja, Medio = 2 e Alta = 3. Lembrando que você poderia atribuir qualquer valor, à qualquer uma das Enums. Esses valores são de grande valor, quando desejamos saber qual é o valor da Enum tendo apenas o índice da Enum. Veremos no exemplo abaixo, como fazer comparações e como obter o valor da Enum tendo apenas o índice.

Um exemplo de código utilizando Enum

Agora, tendo a Enum criada, basta apenas desfrutar dela! Veja abaixo um exemplo de utilização da Enum criada, em uma Console Application, com algumas comparações e operações de conversões:

namespace Enums
{
   public enum Prioridade
   {
     Normal = 1,
     Medio,
     Alta
   }

   class Program
   {
      static void Main(string[] args)
      {
      // Tipo de prioridade do compromisso
      var _prioridade = Prioridade.Alta;

      switch(_prioridade)
      {
         case Prioridade.Alta:
            Console.WriteLine("Prioridade Alta");
            break;
         case Prioridade.Medio:
            Console.WriteLine("Prioridade Média");
            break;
         case Prioridade.Normal:
            Console.WriteLine("Prioridade Normal");
            break;
     }

     Console.WriteLine("====Capturando o nome:====");
     Console.WriteLine(Enum.GetName(typeof(Prioridade), _prioridade));
     Console.WriteLine("n===Casting int => Enum===)");
     Console.WriteLine((Prioridade)2);

     Console.ReadKey();
    }
  }
}

Observe como o código ficou legível e como é fácil obter os valores das constantes! Simples, fácil e o melhor: deixa seu código legível e elimina em grande parte a possibilidade de problemas, pois você está trabalhando com “constantes tipadas” . Até o próximo artigo 🙂

Deixe um comentário

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *

Esse site utiliza o Akismet para reduzir spam. Aprenda como seus dados de comentários são processados.