TOC

This article is currently in the process of being translated into Spanish (~99% done).

Advanced topics:

Enumerations

La enumeraciones son conjuntos especiales de valores nombrados los cuales todos mapean a un conjunto de números, usualmente enteros. Vienen de la mano cuando desea ser capaz de escoger entre un conjunto de valores constantes, y cada con posible valor relacionado a un número, ellos pueden ser usados en una rango amplio de situaciones. Como verá en nuestro ejemplo, las enumeraciones son definidas sobre las clases, dentro de nuestro espacio de nombre. Esto significa que podemos usar enumeraciones de todas las clases dentro del mismo espacio de nombre.

Aquí está un ejemplo de una enumeración simple para mostrar lo que son.

public enum Days { Monday, Tuesday, Wednesday, Thursday, Friday, Saturday, Sunday }

Todos estos valores posibles corresponden con un número. Si no los asignamos específicamente, el primer valor es igual a 0, el siguiente a 1, y así sucesivamente. La siguiente pieza de código probará esto, tanbién mostrará como usamos uno de los valores posibles desde el enum:

using System;

namespace ConsoleApplication1
{
    public enum Days { Monday, Tuesday, Wednesday, Thursday, Friday, Saturday, Sunday }

    class Program
    {
        static void Main(string[] args)
        {
            Days day = Days.Monday;
            Console.WriteLine((int)day);
            Console.ReadLine();
        }
    }
}

La salida será cero, por que el valor de Monday mapea directamente al número cero. Obviamente podemos cambiara eso - cambie la línea a algo como esto:

public enum Days { Monday = 1, Tuesday, Wednesday, Thursday, Friday, Saturday, Sunday }

Si corre nuestro código de nuevo, verá que el valor de Monday ahora iguala a 1 en vez de 0. Todos los otros valores serán un número mayor como resultado. Puede asignar otros números a los otros valores también. Debido al mapeo directo a un número, puede usar números para obtener el valor correspondiente de la enumeración, como ésto:

Days day = (Days)5;
Console.WriteLine(day);
Console.ReadLine();

Otra característica genial de las enumeraciones es el hecho de que usted puede usar una representación de cadena del valor también. Cambie el ejemplo de arriba a algo como ésto:

static void Main(string[] args)
{
    string[] values = Enum.GetNames(typeof(Days));
    foreach(string s in values)
        Console.WriteLine(s);
    
    Console.ReadLine();
}

La clase Enum contiene un montón de métodos útiles para trabajar con enumeraciones.


This article has been fully translated into the following languages: Is your preferred language not on the list? Click here to help us translate this article into your language!