English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

Enumeración (Enum) de C#

En C#, el tipo enum (tipo enumerado) se utiliza para asignar nombres de constantes a un grupo de valores enteros numéricos. Esto hace que los valores de las constantes sean más legibles, por ejemplo, WeekDays.Monday es más legible al referirse a un día de la semana que el número 0.

La enumeración se define directamente utilizando la palabra clave enum en el espacio de nombres, clase o estructura. Todos los nombres de constantes se pueden declarar dentro de los corchetes y separar por comas. A continuación, se define la enumeración de días laborables.

enum WeekDays
{
    Lunes,
    Martes,
    Miércoles,
    jueves,
    viernes,
    sábado,
    domingo
}

Arriba, la enumeración WeekDays se declara en cada línea, separada por comas.

Valores de enumeración

Si no se asigna un valor a un miembro de enumeración, el compilador asignará valores enteros por defecto (comenzando en cero) a cada miembro. El primer miembro de la enumeración será 0, y el valor de cada miembro de enumeración consecutivo aumentará1.

enum WeekDays
{
    Lunes,     // 0
    Martes,    // 1
    Miércoles,  // 2
    jueves,   // 3
    viernes,     // 4
    sábado,   // 5
    domingo      // 6
}

Se pueden asignar diferentes valores a miembros de enumeración. El cambio de valores por defecto de los miembros de enumeración se asignarán automáticamente a otros miembros en orden ascendente.

enum Categories
{
    Electronics,    // 0
    Food,           // 1
    Automotive = 6, // 6
    Arts,           // 7
    BeautyCare,     // 8
    Fashion         // 9
}

Incluso se puede asignar diferentes valores a cada miembro.

enum Categories
{
    Electronics = 1,  
    Food = 5, 
    Automotive = 6, 
    Arts = 10, 
    BeautyCare = 11, 
    Fashion = 15,
    WomanFashion = 15
}

La enumeración puede ser cualquier tipo de datos numéricos, como byte, sbyte, short, ushort, int, uint, long o ulong. Sin embargo, la enumeración no puede ser de tipo cadena.

Después del nombre del enum, especificar el tipo como :type. A continuación, se define el enum de bytes.

enum Categories: byte
{
    Electronics = 1,  
    Food = 5, 
    Automotive = 6, 
    Arts = 10, 
    BeautyCare = 11, 
    Fashion = 15
}

Acceder a una enumeración

Se puede usar la sintaxis de punto: enum.member para acceder a la enumeración

enum WeekDays
{
    Lunes, 
    Martes,
    Miércoles,
    jueves, 
    viernes, 
    sábado,
    domingo 
}
Console.WriteLine(WeekDays.Monday); // Lunes
Console.WriteLine(WeekDays.Tuesday); // Martes
Console.WriteLine(WeekDays.Wednesday); // Miércoles
Console.WriteLine(WeekDays.Thursday); // Jueves
Console.WriteLine(WeekDays.Friday); // Viernes
Console.WriteLine(WeekDays.Saturday); // Sábado
Console.WriteLine(WeekDays.Sunday); // Domingo

Conversión de enumeración

La conversión de un tipo de enumeración a su tipo de entero base requiere una conversión explícita.

enum WeekDays
{
    Lunes, 
    Martes,
    Miércoles,
    jueves, 
    viernes, 
    sábado,
    domingo 
}
Console.WriteLine(WeekDays.Friday); //Salida: viernes 
int day = (int) WeekDays.Friday; // Conversión de enum a int
Console.WriteLine(day); //Salida:4 
var wd = (WeekDays); 5; // Conversión de int a enum
Console.WriteLine(wd);//Salida: sábado

enum es una clase abstracta.