C# Language enum


Esempio

La parola chiave enum dice al compilatore che questa classe eredita dalla classe astratta Enum , senza che il programmatore debba ereditarlo esplicitamente. Enum è un discendente di ValueType , che è inteso per l'uso con un insieme distinto di costanti con nome.

public enum DaysOfWeek
{
    Monday,
    Tuesday,
}

Puoi facoltativamente specificare un valore specifico per ognuno (o alcuni di essi):

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

In questo esempio ho omesso un valore per 0, di solito è una cattiva pratica. Un enum avrà sempre un valore predefinito prodotto dalla conversione esplicita (YourEnumType) 0 , dove YourEnumType è il tipo enume dichiarato. Senza un valore di 0 definito, un enum non avrà un valore definito all'avvio.

Il tipo di enum predefinito di base è int , è possibile modificare il tipo sottostante a qualsiasi tipo integrale incluso byte , sbyte , short , ushort , int , uint , long e ulong . Di seguito è riportato un enum con byte tipo sottostante:

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

Si noti inoltre che è possibile convertire in / dal tipo sottostante semplicemente con un cast:

int value = (int)NotableYear.EndOfWwI;

Per questi motivi è meglio controllare sempre se un enum è valido quando si espongono le funzioni della libreria:

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

    // ...
}