Enumeraciones
Las
enumeraciones permiten crear un grupo de constantes numericas asociadas a un
nombre. Veamos un ejemplo:
public enum Rumbo {Norte, Sur, Este, Oeste};
Para
utilizarlas tenemos que declarar una variable del tipo de la enumeración y
asignarle un valor dentro de los que dicha enumeración posea.
Rumbo avion = Rumbo.Sur;
Por
defecto, a cada valor de la enumeración se le asigna como valor una constante
entera 0, 1, 2,... Opcionalmente se puede especificar un tipo numérico
alternativo y, además, asignarle un valor de este tipo a cada uno de los componentes.
[Flags]
public enum Rumbo: byte {Norte = 1, Sur = 2, Este = 4, Oeste = 8};
Rumbo barco = Rumbo.Norte | Rumbo.Oeste;
if ((barco & Rumbo.Norte) != 0)
Console.WriteLine("Si vas hacia el Norte hará más frio");
El
atributo [FLAGS] es opcional e
informa al entorno de ejecución de que los valores de la enumeración pueden ser
combinados, y deberán ser decodificados adecuadamente en el depurador y cuando
se muestren por la consola.
Console.WriteLine(barco.Format()); // muestra "Norte|Oeste"
Console.WriteLine(barco); // muestra "9"
El
tipo System.Enum proporciona
una gran cantidad de métodos estáticos muy útilies para manejar las
enumeraciones:
// enum.cs
using System;
public enum Logico : byte { Off = 0, On = 1 };
class Prueba
{
public static void Main()
{
Type t = Enum.GetUnderlyingType(typeof(Logico));
Console.WriteLine(t); // imprime "Byte";
bool hay_medio = Enum.IsDefined(typeof(Logico), "Medio");
Console.WriteLine(hay_medio); // imprime "False"
Logico l = (Logico)Enum.Parse(typeof(Logico), "On");
Console.WriteLine(Enum.Format(typeof(Logico), l, "D")); // imprime "1"
Console.WriteLine(l); // imprime "On"
foreach(Logico logico in Enum.GetValues(typeof(Logico)))
Console.WriteLine("{0} = {1}", logico,
Enum.Format(typeof(Logico), logico, "D"));
}
}
DEMOSTRACIÓN
En Visual Studio vamos a dar click en menú File à New à Project
En la Ventana emergente le damos click a Window,
seleccionamos la opción “Console Application” y espacio Name colocamos el
nombre del proyecto que para el Ejemplo es “Demo 3 20483” y luego presionamos
el botón OK
A continuación tipiaremos una enumeración de nombre “EstadoCivil”:
Ejecutamos
Y el resultado es el siguiente: