C# Enum(enumerazione) con esempio
⚡ Riepilogo intelligente
In C#, le enumerazioni definiscono un insieme denominato di valori interi costanti, come ad esempio i giorni della settimana, rendendo il codice più leggibile e manutenibile. La parola chiave `enum` dichiara queste costanti fisse una sola volta, per poterle riutilizzare in tutto il programma.
Enumerazione C#
Un'enumerazione viene utilizzata in qualsiasi linguaggio di programmazione per definire un insieme costante di valori. Ad esempio, i giorni della settimana possono essere definiti come un'enumerazione e utilizzati in qualsiasi punto del programma. In C# l'enumerazione viene definita con l'aiuto della parola chiave 'enum'.
Vediamo un esempio di come possiamo utilizzare la parola chiave 'enum'.
Nel nostro esempio definiremo un'enumerazione chiamata days, che verrà utilizzata per memorizzare i giorni della settimana. Per ogni esempio, modificheremo solo la funzione principale nel nostro file Program.cs.
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace DemoApplication { class Program { enum Days{Sun,Mon,tue,Wed,thu,Fri,Sat}; static void Main(string[] args) { Console.Write(Days.Sun); Console.ReadKey(); } } }
Code Spiegazione:-
- L'"enumerazione" tipo di dati è specificato per dichiarare un'enumerazione. Il nome dell'enumerazione è Giorni. Tutti i giorni della settimana sono specificati come valori dell'enumerazione.
- Infine la funzione console.write viene utilizzata per visualizzare uno dei valori dell'enumerazione.
Se il codice sopra riportato viene immesso correttamente e il programma viene eseguito correttamente, verrà visualizzato il seguente output.
Produzione:
Dall'output, puoi vedere che il valore "Sole" dell'enumerazione viene visualizzato nella console.
Perché utilizzare gli enum in C#?
Le enumerazioni rendono un programma più leggibile, più sicuro e più semplice da manutenere. Invece di disseminare numeri senza spiegazione, a volte chiamati numeri magici, in tutto il codice, un'enumerazione assegna a ciascun valore un nome descrittivo che ne indica lo scopo.
- leggibilità: Un nome come Days.Fri è molto più chiaro del numero 5, quindi chiunque legga il codice ne comprende immediatamente il significato.
- Tipo di sicurezza: Una variabile dichiarata con un tipo enum può contenere solo uno dei membri definiti, il che impedisce l'inserimento di valori non validiping pollici
- Manutenibilità: Le costanti correlate risiedono in un unico punto, quindi l'aggiunta o la ridenominazione di un valore aggiorna l'intero programma in modo coerente.
- Associazione dati: Framework come WPF e ASP.NET consentono di associare un'enumerazione a un elenco a discesa, rendendo le enumerazioni utili per la creazione di interfacce utente.
Poiché il compilatore verifica ogni assegnazione rispetto ai membri consentiti, gli enum aiutano anche a individuare gli errori in anticipo, prima dell'esecuzione del programma.
Assegnazione di valori personalizzati a un'enumerazione C#
Per impostazione predefinita, C# assegna al primo membro dell'enumerazione il valore 0 e incrementa di uno ogni membro successivo. Nell'enumerazione Days riportata sopra, Sun è uguale a 0, Mon è uguale a 1 e Sat è uguale a 6. È possibile sovrascrivere questi valori predefiniti assegnando numeri espliciti.
- Valori espliciti: Scrivendo l'enumerazione Level {Low = 1, Medium = 5, High = 10}, ogni membro viene impostato su un numero scelto anziché sulla sequenza predefinita.
- Compito parziale: Se si assegna un valore solo ad alcuni membri, il compilatore mantiene la numerazione a partire dall'ultimo valore assegnato per i membri successivi.
- Tipo sottostante: Un'enumerazione memorizza i suoi membri come interi per impostazione predefinita, ma è possibile basarla su byte, short o long per risparmiare memoria o estendere l'intervallo.
I valori personalizzati sono utili quando i numeri devono corrispondere a un sistema esterno, come codici di database o costanti di protocollo, in modo che l'enumerazione rispecchi esattamente i dati reali.
Come convertire gli enum C# in int, string e flag
In C# è spesso necessario convertire un valore enum in un altro formato, ad esempio memorizzandolo come numero o leggendolo da testo. Queste conversioni avvengono in alcuni modi standard.
- Enum in int: Un cast esplicito come (int)Days.Wed restituisce l'intero sottostante, utile per l'archiviazione o per le operazioni aritmetiche.
- da intero a enumerazione: Eseguendo il casting nella direzione opposta, ad esempio (Days)3, un numero viene riconvertito nel corrispondente membro dell'enumerazione.
- Da stringa a enumerazione: Enum.Parse e il più sicuro Enum.TryParse convertono un nome come "Fri" nel membro Days.Fri senza generare un'eccezione per testo non valido.
- Enum in stringa: La chiamata a ToString su qualsiasi membro restituisce il suo nome, quindi Days.Sun.ToString() produce "Sun" per la visualizzazione o la registrazione.
- Elenco dei membri: I metodi Enum.GetValues e Enum.GetNames restituiscono tutti i valori o i nomi, il che è utile per popolare i menu o convalidare l'input.
Quando un'enumerazione deve rappresentare una combinazione di scelte anziché una singola opzione, applica l'attributo Flags e assegna a ciascun membro una potenza di due, ad esempio 1, 2, 4 e 8. Puoi quindi combinare i membri con l'operatore OR bit a bit e verificare la presenza di un'opzione specifica con il metodo HasFlag.
Queste tecniche di conversione consentono a un enum di spostarsi agevolmente tra nomi leggibili, numeri memorizzati e set di flag combinati, mantenendoping il resto del programma è sia a prova di errore che di facile comprensione.



