Enum é a melhor forma para se trabalhar com constantes, e manter uma forte tipagem de um determinado atributo, e garantir que um combobox por exemplo irá manter nossos atributos coesos, e que nossa variável será armazenada com os tipos pré definidos, como exemplo cito os tipos de carros de uma locadora de veículos qualquer, a praticidade dos enums é enxergada melhor com o código abaixo:
Vamos criar o nosso formulário, parecido com este:
Agora vamos criar a nossa classe Carro.cs
public class Carro
{
public enum TipoCarro
{
Sedan = 1,
Esportivo = 2,
Hatch = 3,
Other = 4
}
public TipoCarro tipoCarro { get; set; }
}
Perceba que os valores inteiros que acompanham podem ser recuperados
Crie agora eventos de load e click para o botão, e após isto deixe seu código igual a este:
private void Form1_Load(object sender, EventArgs e)
{
comboBox1.DataSource = Enum.GetValues(typeof(Carro.TipoCarro));
}
private void button1_Click(object sender, EventArgs e)
{
Carro.TipoCarro tipo = (Carro.TipoCarro)comboBox1.SelectedItem;
MessageBox.Show(String.Concat(comboBox1.SelectedValue.ToString(), " - ", (int)tipo));
}
Note que povoamos o datasource do combobox com os values do Enum,
Pegamos o enum selecionado no combobox e atribuimos na propriedade "tipo" e que
para acessar os inteiros do enum fizemos um cast simples no item selecionado -> (int)tipo
Ao rodar o programa:
Pronto criamos enum bem eficiente e fortemente tipado ;)
Uma das vantagens de se ter enum é que podem ser tratados como se fossem inteiros, ou seja, podemos usar em switchs, if...
Além de podermos comparar a tipagem ao invés de comparar strings.
Carro c = new Carro();
c.tipoCarro = Carro.TipoCarro.Esportivo;
if (c.tipoCarro == Carro.TipoCarro.Esportivo)
{
//TODO
}
* muito mais limpo do que comparar strings.