English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

Enumerazione di C# (Enum)

In C#, enum (tipi enumerativi) viene utilizzato per assegnare nomi costanti a un insieme di valori interi. Questo rende i valori costanti più leggibili, ad esempio, WeekDays.Monday è più leggibile rispetto al numero 0 quando si fa riferimento a un giorno della settimana.

L'enumerazione è definita direttamente utilizzando la parola chiave enum all'interno di uno spazio dei nomi, di una classe o di una struttura. Tutti i nomi delle costanti possono essere dichiarati all'interno delle graffe e separati da virgole. Di seguito è definita l'enumerazione dei giorni lavorativi.

enum WeekDays
{
    Lunedì,
    Martedì,
    Mercoledì,
    Giovedì,
    Venerdì,
    Sabato,
    Domenica
}

Sopra, l'enumerazione WeekDays viene dichiarata in ogni riga, separata da virgole.

Valori enum

Se non viene assegnato un valore a un membro dell'enumerazione, il compilatore assegnerà automaticamente un valore intero a ciascun membro (iniziando da zero). Il primo membro dell'enumerazione sarà 0, e il valore di ciascun membro successivo dell'enumerazione aumenterà di 1.

enum WeekDays
{
    Monday,             // 0
    Tuesday,            // 1
    Wednesday,         // 2
    Thursday,         // 3
    Friday, // 4
    Saturday, // 5
    Sunday // 6
}

Puoi assegnare valori diversi ai membri dell'enumerazione. La modifica del valore predefinito dei membri dell'enumerazione assegnerà automaticamente valori incrementali in ordine ai altri membri.

enum Categories
{
    Electronics, // 0
    Food, // 1
    Automotive = 6, // 6
    Arts, // 7
    BeautyCare, // 8
    Fashion // 9
}

Puoi assegnare valori diversi a ciascun membro.

enum Categories
{
    Electronics = 1,  
    Food = 5, 
    Automotive = 6, 
    Arts = 10, 
    BeautyCare = 11, 
    Fashion = 15,
    WomanFashion = 15
}

Un'enumerazione può essere di qualsiasi tipo di dati numerici, ad esempio byte, sbyte, short, ushort, int, uint, long o ulong. Tuttavia, un'enumerazione non può essere di tipo stringa.

Dopo il nome enum specifica il tipo come :type. Di seguito è definita un'enumerazione byte.

enum Categories: byte
{
    Electronics = 1,  
    Food = 5, 
    Automotive = 6, 
    Arts = 10, 
    BeautyCare = 11, 
    Fashion = 15
}

Accedi a un membro dell'enumerazione

Puoi utilizzare la sintassi punto: enum.member per accedere all'enumerazione

enum WeekDays
{
    Lunedì, 
    Martedì,
    Mercoledì,
    Giovedì, 
    Venerdì, 
    Sabato,
    Domenica 
}
Console.WriteLine(WeekDays.Monday); // Lunedì
Console.WriteLine(WeekDays.Tuesday); // Martedì
Console.WriteLine(WeekDays.Wednesday); // Mercoledì
Console.WriteLine(WeekDays.Thursday); // Giovedì
Console.WriteLine(WeekDays.Friday); // Venerdì
Console.WriteLine(WeekDays.Saturday); // Sabato
Console.WriteLine(WeekDays.Sunday); // Domenica

Converti l'enumerazione

La conversione da tipo enumerativo al tipo di intero di base richiede un casting esplicito.

enum WeekDays
{
    Lunedì, 
    Martedì,
    Mercoledì,
    Giovedì, 
    Venerdì, 
    Sabato,
    Domenica 
}
Console.WriteLine(WeekDays.Friday); // Output: Venerdì 
int day = (int) WeekDays.Friday; // Conversione da enum a int
Console.WriteLine(day); // Output: 4 
var wd = (WeekDays) 5; // Conversione da int a enum
Console.WriteLine(wd); // Output: Sabato

enum è una classe astratta.