O tipo enum em C# é uma estrutura poderosa que permite definir um conjunto de constantes nomeadas, tornando o código mais legível e organizado. Os enumeradores são ideais para representar grupos de valores fixos, como dias da semana, estados de um processo, níveis de prioridade, entre outros. Neste post, vamos entender como utilizar o tipo enum, seus benefícios e como aplicá-lo em diferentes cenários.

O que é enum?

enum (abreviação de “enumeration”) é um tipo de dado especial que consiste em um conjunto de valores constantes atribuídos a identificadores. Ele permite que você atribua nomes significativos a valores numéricos, facilitando a leitura e compreensão do código.

Sintaxe básica do enum

A declaração de um enum em C# segue a seguinte estrutura:

enum DiaDaSemana
{
    Domingo,
    Segunda,
    Terca,
    Quarta,
    Quinta,
    Sexta,
    Sabado
}

Aqui, o enum chamado DiaDaSemana define sete constantes (uma para cada dia), onde os valores começam automaticamente em 0 e são incrementados por 1.

  • Domingo tem o valor 0,
  • Segunda tem o valor 1,
  • e assim por diante até Sabado, que tem o valor 6.

Usando enum no código

Após declarar um enum, você pode usá-lo para definir variáveis que representem esses valores nomeados.

using System;

class Program
{
    static void Main()
    {
        DiaDaSemana hoje = DiaDaSemana.Sexta;

        Console.WriteLine("Hoje é: " + hoje);  // Saída: Hoje é: Sexta
        Console.WriteLine("Valor numérico: " + (int)hoje);  // Saída: Valor numérico: 5
    }
}

Neste exemplo, a variável hoje é do tipo DiaDaSemana e é atribuída ao valor DiaDaSemana.Sexta. Além disso, o enum pode ser convertido para seu valor numérico subjacente (um int), usando um cast explícito (int).

Atribuindo valores específicos

Por padrão, o enum começa em 0 e os valores são incrementados automaticamente. No entanto, você pode definir valores específicos para os elementos do enum:

enum StatusPedido
{
    Pendente = 1,
    Processando = 2,
    Concluido = 3,
    Cancelado = 0
}

Aqui, os valores são atribuídos explicitamente:

  • Pendente tem o valor 1,
  • Processando é 2,
  • Concluido é 3,
  • Cancelado é 0.

Exemplos de uso do enum

1. Controle de estado

O enum é frequentemente usado para representar estados em fluxos de trabalho. Por exemplo, um sistema de gerenciamento de pedidos pode usar um enum para definir os estados possíveis de um pedido:

enum EstadoPedido
{
    Pendente,
    Enviado,
    Entregue,
    Cancelado
}

class Pedido
{
    public EstadoPedido Estado { get; set; }

    public void AtualizarEstado(EstadoPedido novoEstado)
    {
        Estado = novoEstado;
        Console.WriteLine($"O estado do pedido foi atualizado para: {Estado}");
    }
}

Neste exemplo, o EstadoPedido define os possíveis estados de um pedido. A classe Pedido usa o enum para armazenar e atualizar o estado do pedido.

2. Configurações de prioridade

Um enum também pode ser usado para representar diferentes níveis de prioridade em um sistema:

enum Prioridade
{
    Baixa = 1,
    Media = 2,
    Alta = 3,
    Critica = 4
}

class Tarefa
{
    public string Descricao { get; set; }
    public Prioridade NivelPrioridade { get; set; }

    public void ExibirDetalhes()
    {
        Console.WriteLine($"Tarefa: {Descricao} - Prioridade: {NivelPrioridade} ({(int)NivelPrioridade})");
    }
}

Aqui, a classe Tarefa contém uma propriedade NivelPrioridade que é do tipo Prioridade. O método ExibirDetalhes mostra a prioridade como texto e também o valor numérico subjacente.

Métodos úteis com enum

O tipo enum em C# possui alguns métodos úteis que facilitam a manipulação de seus valores.

1. Enum.GetValues()

Este método retorna uma matriz de todos os valores de um enum, útil quando você deseja iterar sobre eles.

foreach (DiaDaSemana dia in Enum.GetValues(typeof(DiaDaSemana)))
{
    Console.WriteLine(dia);
}

2. Enum.GetName()

Este método retorna o nome do elemento enum com base em seu valor numérico.

int valor = 3;
string nomeDoDia = Enum.GetName(typeof(DiaDaSemana), valor);
Console.WriteLine(nomeDoDia);  // Saída: Quarta

3. Enum.IsDefined()

Esse método verifica se um valor ou nome está definido no enum.

bool existe = Enum.IsDefined(typeof(DiaDaSemana), "Sexta");
Console.WriteLine(existe);  // Saída: True

Vantagens de usar enum

  1. Legibilidade: Usar nomes descritivos em vez de valores numéricos torna o código mais fácil de entender e manter;

  2. Manutenção: Se os valores de um enum precisarem mudar, você só precisa alterar a definição do enum em um único lugar;

  3. Segurança de tipo: Diferente de valores numéricos simples, os enum oferecem segurança de tipo, garantindo que apenas valores válidos sejam atribuídos às variáveis.

Outro exemplo prático

As vantagens dos enumeradores são a melhor semântica, código mais legível e supervisionamento pelo compilador. Exemplo:

Definimos o tipo inteiro enum “OrderStatus” com os valores possíveis: PendingPayment, Processing, Shipped e Delivered:

enum OrderStatus : int {

   PendingPayment = 0,
   Processing = 1,
   Shipped = 2,
   Delivered = 3
 }

Criamos uma classe para utilizarmos o tipo enumerado criado anteriormente:

class Order {
	
   public int Id { get; set; }
   public DateTime Moment  { get; set; }
   public OrderStatus Status { get;  set; } //tipo enumerado "OrderStatus"
        
   public override string  ToString() {
		
      return Id
      + ", " 
      + Moment
      + ", "
      +Status;
    }
 }

Utilizando o tipo enumerado na classe:

Order order = new Order {
	
   Id = 2705,
   Moment = DateTime.Now,
   Status = OrderStatus.PendingPayment//aqui utilizamos o tipo enumerado
 };

 //Mostrando os valores:
 Console.Writeline(order);

Para convertermos tipos strings para enum e vice-versa:

string texto = OrderStatus.PendingPayment.ToString(); //string para o tipo enum
    
//parametrizamos o Parse e passamos a string para converter
OrderStatus os = Enum.Parse<OrderStatus>("Delivered");//de enum para string

O tipo enum em C# é uma excelente maneira de representar conjuntos de constantes nomeadas em seu código, melhorando a legibilidade, a segurança e a organização do projeto.

Ao usar enum, você pode garantir que valores fixos e suas representações sejam consistentes e fáceis de manipular. Seja em controle de estados, configurações de prioridade ou qualquer outra área que requeira valores fixos, o enum é uma ferramenta essencial para desenvolvedores C#.

Aprenda do zero ou aprimore seus conhecimentos em C#. Domine os conceitos de Orientação a Objetos e crie sistemas complexos integrados com banco de dados.

CONHEÇA O CURSO COMPLETO DE C# COM + DE 100 AULAS PRÁTICAS. Tenha acesso vitalício e certificado de conclusão.

CLIQUE NA IMAGEM ABAIXO E CONFIRA MAIS DETALHES:

CLIQUE AQUI E SAIBA MAIS

Dúvidas ou sugestões sobre tipo enum em C#? Deixem nos comentários! Para mais dicas, acesse o nosso canal no YouTube:
https://youtube.com/criandobits

Tags:

Quer receber GRÁTIS o e-book "Como Formatar um Computador em 5 Minutos"?

Não enviamos spam. Seu e-mail está 100% seguro!

Sobre o Autor

Bene Silva Júnior
Bene Silva Júnior

Bacharel em Sistemas de Informação pelo Instituto Paulista de Pesquisa e Ensino IPEP. Apaixonado por tecnologias e games do tempo da vovó!

0 Comentários

Deixe um comentário

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