Lectores como tú ayudan a apoyar a MUO. Cuando realiza una compra utilizando enlaces en nuestro sitio, podemos ganar una comisión de afiliado. Leer más.

Las enumeraciones son un tipo de datos útil que le permite definir una lista de opciones con nombre para una variable. Por ejemplo, si desea almacenar cada día de la semana, puede usar una enumeración para representar los valores válidos.

Las enumeraciones hacen que su código sea más fácil de leer y escribir al fomentar nombres significativos y limitar los valores que puede usar. A menudo es conveniente usar una declaración de cambio para manejar los posibles valores de una enumeración.

Puede declarar y usar enumeraciones en muchos lenguajes de programación, incluido C#.

Cómo declarar una enumeración en C#

En C#, generalmente etiquetará las enumeraciones en el nivel del espacio de nombres. Por ejemplo, en una aplicación de consola C#, puede declarar sus enumeraciones como propiedades de clase. Puedes ver un ejemplo en este repositorio de GitHub.

instagram viewer
clasePrograma
{
enumeración Día laborable {
Lunes,
Martes,
Miércoles,
Jueves,
Viernes,
Sábado,
Domingo
}

estáticovacíoPrincipal(cadena[] argumentos)
{

}
}

Cuando declara una enumeración, cada opción obtiene un valor entero para representar su índice. De forma predeterminada, el primer valor de la enumeración tiene un valor de índice de 0. Para cambiar esto, puede especificar su propio índice para el primer elemento cuando declara la enumeración:

enumeración Día laborable { 
lunes = 1,
Martes,
Miércoles,
Jueves,
Viernes,
Sábado,
Domingo
}

En este caso, el índice del primer elemento Lunes empieza a 1. El índice del siguiente elemento. Martes será 2, etcétera.

Cómo acceder a un valor de enumeración en C#

Hay muchas formas diferentes de acceder a los valores almacenados dentro de las enumeraciones. El valor devuelto para cada opción en la enumeración es el índice. Para este ejemplo, el valor de Día laborable. Viernes es 5.

Una forma de recuperar el nombre de la enumeración es usando el Enumeraciones. ObtenerNombre() función. Esto obtiene el nombre de la opción en el índice 5:

cadena viernes = enumeración. ObtenerNombre(tipo de(Día de la semana), Día de la semana. Viernes);
Consola. Línea de escritura("Gracias a Dios que es" + viernes + "!");
// Salida = ¡Gracias a Dios que es viernes!

También puede acceder a un valor utilizando su índice. En este caso, el valor en el índice 2 en la enumeración del día de la semana (que es el martes) se almacenará en la variable:

Día de la semana martes = (Día de la semana)2;
Consola. Línea de escritura("Hoy es " + martes);
// Salida = Hoy es martes

Cuando pasas una enumeración como argumento a Consola. Línea de escritura(), el Encadenar() El método para la enumeración se ejecuta automáticamente. Esto significa que en lugar de imprimir el verdadero valor numérico de la enumeración, que es 5, imprimirá el valor de la cadena, Viernes.

Consola. WriteLine (Día de la semana. jueves + " Es el nuevo " + Día de la semana. Viernes);
// Salida = El jueves es el nuevo viernes

Tú también puedes convertir o analizar el tipo de datos en un número entero como otra forma de almacenar el índice de una opción:

En t índicelunes = (En t)Día laborable. Lunes;
Consola. WriteLine (índice de lunes);
// Salida = 1

Cómo comparar enumeraciones en C#

En C#, puede comparar enumeraciones mediante los operadores de comparación (==, !=, , <=, >=). Esto comparará el valor numérico de las opciones.

Día de la semana día1 = Día de la semana. Lunes;
Día de la semana día2 = Día de la semana. Martes;

si (día1 == día2)
{
Consola. Línea de escritura("Los días son los mismos".);
}
demás
{
Consola. Línea de escritura("Los días son diferentes".);
}

En este ejemplo, el valor de Weekday. Lunes es 1, y el valor de Día de la semana. El martes es 2, por lo que el 1 == 2 la comparación fallará.

Otra forma de comparar enumeraciones es la Iguales() método:

si (día1.Equals (día2))
{
Consola. Línea de escritura("Los días son los mismos".);
}
demás
{
Consola. Línea de escritura("Los días son diferentes".);
}

Tú también puedes use una declaración de cambio de C# para comparar un valor con cada opción en una enumeración. En este ejemplo, el código caerá en el caso del miércoles:

Día de la semana valueToCompare = Día de la semana. Miércoles;

cambiar (valorParaComparar)
{
caso Día laborable. Lunes:
Consola. Línea de escritura("Necesito café.");
romper;
caso Día laborable. Martes:
Consola. Línea de escritura("Necesito café.");
romper;
caso Día laborable. Miércoles:
Consola. Línea de escritura("Necesito café.");
romper;
caso Día laborable. Jueves:
Consola. Línea de escritura("¡El jueves es el nuevo viernes!");
romper;
caso Día laborable. Viernes:
Consola. Línea de escritura("¡Gracias a Dios es Viernes!");
romper;
caso Día laborable. Sábado:
Consola. Línea de escritura("¡Mi día favorito!");
romper;
caso Día laborable. Domingo:
Consola. Línea de escritura("¡Mi otro día favorito!");
romper;
por defecto:
Consola. Línea de escritura("Día de la semana no válido".);
romper;
}

Cómo iterar sobre enumeraciones en C#

Puede iterar sobre enumeraciones en C# usando el enumeración ObtenerValores() método, que devuelve una matriz de todos los valores en la enumeración. Este fragmento de código se imprime todos los días de la semana, incluidos los lunes, martes, etc.:

para cada (Día de la semana en enumeración ObtenerValores(tipo de(Día laborable)))
{
Consola. Línea de escritura((En t)día); // Para imprimir el índice
Consola. WriteLine (día); // Para imprimir el valor del texto
}

También puede iterar sobre los valores de enumeración usando el enumeración ObtenerNombres() método. Devuelve una lista de valores de cadena para representar los nombres de las opciones de enumeración:

para cada (cadena nombre en enumeración ObtenerNombres(tipo de(Día laborable)))
{
En t índice = (En t)(Día de la semana) Enumeración. Analizar gramaticalmente(tipo de(Día de la semana), nombre);

Consola. WriteLine (índice); // Para imprimir el índice
Consola. WriteLine (nombre); // Para imprimir el valor del texto
}

Uso de enumeraciones en C#

Puede usar enumeraciones en su código para hacerlo más legible y menos propenso a errores. Las enumeraciones también pueden ser muy útiles cuando se combinan con otras estructuras, como los diccionarios.