English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
No C#, enum (tipo de enumeração) é usado para atribuir nomes de constante a um grupo de valores inteiros. Isso torna os valores de constante mais legíveis, por exemplo, WeekDays.Monday é mais legível ao referir-se a um dia da semana do que o número 0.
As enumerações são definidas diretamente usando a palavra-chave enum dentro de um espaço de nomes, classe ou estrutura. Todos os nomes de constantes podem ser declarados dentro dos colchetes curly e separados por vírgulas. Abaixo está definida a enumeração de dias úteis.
enum WeekDays { Monday Tuesday Wednesday Quinta-feira, Sexta-feira, Sábado, Domingo }
Acima, a enumeração WeekDays declara membros em cada linha, separados por vírgulas.
Se não for atribuído valor a um membro de enumeração, o compilador atribuirá automaticamente valores inteiros (começando com zero) a cada membro. O primeiro membro da enumeração será 0, e o valor de cada membro subsequente da enumeração aumentará1.
enum WeekDays { Monday // 0 Tuesday // 1 Wednesday // 2 Quinta-feira, // 3 Sexta-feira, // 4 Sábado, // 5 Domingo // 6 }
Pode-se atribuir valores diferentes a membros de enumeração. A alteração do valor padrão dos membros de enumeração será automaticamente atribuída incrementalmente aos outros membros.
enum Categories { Electronics, // 0 Food, // 1 Automotive = 6, // 6 Arts, // 7 BeautyCare, // 8 Fashion // 9 }
Pode-se até atribuir valores diferentes a cada membro.
enum Categories { Electronics = 1, Food = 5, Automotive = 6, Arts = 10, BeautyCare = 11, Fashion = 15, WomanFashion = 15 }
As enumerações podem ser de qualquer tipo de dados numéricos, por exemplo byte, sbyte, short, ushort, int, uint, long ou ulong. Mas, as enumerações não podem ser de tipo string.
Após o nome do enum, especificar o tipo como :type. Abaixo está definida a enumeração de bytes.
enum Categories: byte { Electronics = 1, Food = 5, Automotive = 6, Arts = 10, BeautyCare = 11, Fashion = 15 }
Pode-se usar a sintaxe de ponto: enum.membro para acessar a enumeração
enum WeekDays { Monday Tuesday Wednesday Quinta-feira, Sexta-feira, Sábado, Domingo } Console.WriteLine(WeekDays.Monday); // Segunda-feira Console.WriteLine(WeekDays.Tuesday); // Terça-feira Console.WriteLine(WeekDays.Wednesday); // Quarta-feira Console.WriteLine(WeekDays.Thursday); // Quarta-feira Console.WriteLine(WeekDays.Friday); // Quinta-feira Console.WriteLine(WeekDays.Saturday); // Sábado Console.WriteLine(WeekDays.Sunday); // Domingo
A conversão de um tipo de enumeração para seu tipo de inteiro básico requer conversão explícita.
enum WeekDays { Monday Tuesday Wednesday Quinta-feira, Sexta-feira, Sábado, Domingo } Console.WriteLine(WeekDays.Friday); //Saída: Sexta-feira int day = (int) WeekDays.Friday; // Conversão de enum para int Console.WriteLine(day); //Saída:4 var wd = (WeekDays) 5; // Conversão de int para enum Console.WriteLine(wd);//Saída: Sábado
enum é uma classe abstrata.