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
- Legibilidade: Usar nomes descritivos em vez de valores numéricos torna o código mais fácil de entender e manter;
- Manutenção: Se os valores de um
enum
precisarem mudar, você só precisa alterar a definição doenum
em um único lugar; - 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#.
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:
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
Quer receber GRÁTIS o e-book "Como Formatar um Computador em 5 Minutos"?
Sobre o Autor
0 Comentários