C# Language enumerar


Ejemplo

La palabra clave enum le dice al compilador que esta clase hereda de la clase abstracta Enum , sin que el programador tenga que heredarla explícitamente. Enum es un descendiente de ValueType , que está diseñado para usarse con un conjunto distinto de constantes con nombre.

public enum DaysOfWeek
{
    Monday,
    Tuesday,
}

Opcionalmente, puede especificar un valor específico para cada uno (o algunos de ellos):

public enum NotableYear
{
   EndOfWwI = 1918;
   EnfOfWwII = 1945,
}

En este ejemplo, omití un valor para 0, esto suele ser una mala práctica. Una enum siempre tendrá un valor predeterminado producido por la conversión explícita (YourEnumType) 0 , donde YourEnumType es su tipo de enume declarado. Sin un valor de 0 definido, una enum no tendrá un valor definido al inicio.

El tipo subyacente predeterminado de enum es int , puede cambiar el tipo subyacente a cualquier tipo integral, incluidos byte , sbyte , short , ushort , int , uint , long y ulong . A continuación se muestra una enumeración con el byte tipo subyacente:

enum Days : byte
{
    Sunday = 0,
    Monday,
    Tuesday,
    Wednesday,
    Thursday,
    Friday,
    Saturday
};

También tenga en cuenta que puede convertir a / desde el tipo subyacente simplemente con una conversión:

int value = (int)NotableYear.EndOfWwI;

Por estos motivos, es mejor que siempre compruebe si una enum es válida cuando expone las funciones de la biblioteca:

void PrintNotes(NotableYear year)
{
    if (!Enum.IsDefined(typeof(NotableYear), year))
        throw InvalidEnumArgumentException("year", (int)year, typeof(NotableYear));

    // ...
}