Iterazione sui valori degli enum
Enumera tutti i membri con Enum.GetValues.
Iterazione sui valori degli enum è una lezione C# Academy gratuita su CoddyKit. Questa è la lezione 4 di 4. Puoi leggere la lezione completa qui gratuitamente — poi esercitati direttamente nel browser con un editor di codice integrato e un tutor IA disponibile 24/7. Fa parte del percorso di apprendimento C# Academy, e i tuoi progressi si sincronizzano tra il web e l'app CoddyKit. Il corso C# Academy include 4 lezioni in totale.
Elencare i membri di un enum
A volte è necessario ottenere ogni valore di un enum, ad esempio per creare un menu. Enum.GetValues li fornisce.
using System;
enum Day { Mon, Tue, Wed }
class Program {
static void Main() {
foreach (Day d in Enum.GetValues<Day>())
Console.WriteLine(d);
}
}GetValues generico
Il metodo generico Enum.GetValues<T>() restituisce un array fortemente tipizzato che è possibile scorrere direttamente.
using System;
enum Color { Red, Green, Blue }
class Program {
static void Main() {
Color[] all = Enum.GetValues<Color>();
Console.WriteLine(all.Length);
}
}Ottenere i nomi dei membri
Enum.GetNames<T>() restituisce i nomi dei membri come stringhe.
using System;
enum Color { Red, Green, Blue }
class Program {
static void Main() {
foreach (string name in Enum.GetNames<Color>())
Console.WriteLine(name);
}
}Nomi e valori insieme
Scorra i valori e li converta in int per stampare sia il nome sia il numero sottostante.
using System;
enum Color { Red = 1, Green = 2, Blue = 4 }
class Program {
static void Main() {
foreach (Color c in Enum.GetValues<Color>())
Console.WriteLine(c + " = " + (int)c);
}
}Contare i membri
La lunghezza dell'array dei valori indica quanti membri contiene l'enumerazione.
using System;
enum Suit { Hearts, Diamonds, Clubs, Spades }
class Program {
static void Main() {
int count = Enum.GetValues<Suit>().Length;
Console.WriteLine(count);
}
}Creare un menu
Scorrere i valori è ideale per stampare un elenco numerato di opzioni.
using System;
enum Option { Start, Settings, Quit }
class Program {
static void Main() {
int i = 1;
foreach (Option o in Enum.GetValues<Option>())
Console.WriteLine(i++ + ") " + o);
}
}Filtrare durante l'iterazione
È possibile saltare alcuni membri, ad esempio un valore sentinella None, durante l'iterazione.
using System;
enum State { None, Active, Closed }
class Program {
static void Main() {
foreach (State s in Enum.GetValues<State>())
if (s != State.None)
Console.WriteLine(s);
}
}Iterare con LINQ
Combini Enum.GetValues con LINQ per filtrare o trasformare i valori.
using System;
using System.Linq;
enum Level { Low = 1, Medium = 2, High = 3 }
class Program {
static void Main() {
var highOnes = Enum.GetValues<Level>().Where(l => (int)l >= 2);
foreach (var l in highOnes) Console.WriteLine(l);
}
}La forma non generica precedente
Prima dei generics si usava Enum.GetValues(typeof(T)), che restituisce un array non tipizzato.
using System;
enum Color { Red, Green, Blue }
class Program {
static void Main() {
foreach (Color c in Enum.GetValues(typeof(Color)))
Console.WriteLine(c);
}
}Flag e iterazione
Per le enumerazioni di flag, l'iterazione elenca ogni flag singolarmente; vengono visualizzati anche i membri combinati di praticità, quindi li filtri se necessario.
using System;
[Flags]
enum Perm { Read = 1, Write = 2, Execute = 4 }
class Program {
static void Main() {
foreach (Perm p in Enum.GetValues<Perm>())
Console.WriteLine(p + " = " + (int)p);
}
}Perché iterare sulle enumerazioni
L'iterazione mantiene l'interfaccia utente e la convalida sincronizzate con l'enumerazione: aggiunga un membro e i cicli lo includeranno automaticamente.
using System;
enum Size { Small, Medium, Large }
class Program {
static void Main() {
foreach (Size s in Enum.GetValues<Size>())
Console.WriteLine("Available: " + s);
}
}Verifica rapida
Verifichi la Sua comprensione dell'iterazione delle enumerazioni.
Riepilogo
Enum.GetValues<T>() restituisce ogni membro in un array tipizzato, mentre Enum.GetNames<T>() restituisce i relativi nomi. È possibile scorrere i valori per stampare i nomi insieme ai valori numerici, contare i membri, creare menu o filtrare con LINQ.
L'iterazione mantiene automaticamente menu e convalida sincronizzati man mano che l'enumerazione cresce.
Domande Frequenti
La lezione «Iterazione sui valori degli enum» è gratuita?
Sì — il testo completo di «Iterazione sui valori degli enum» è gratuito qui sul web. Per esercitarvi in modo interattivo (un editor di codice integrato e un tutor IA 24/7) e sbloccare il resto del corso C# Academy, passa a CoddyKit PRO. Il corso C# Academy include 4 lezioni in totale.
Cosa imparerò in «Iterazione sui valori degli enum»?
Enumera tutti i membri con Enum.GetValues. Eserciti C# Academy con codice pratico che esegui direttamente nel browser, e un tutor IA 24/7 risponde alle tue domande mentre lavori sulla lezione.
Ho bisogno di esperienza per iniziare C# Academy?
Non è richiesta alcuna esperienza precedente. C# Academy su CoddyKit è strutturato per principianti e studenti avanzati, quindi puoi iniziare da qui o dall'inizio e procedere al tuo ritmo. Questa è la lezione 4 di 4.
Quanto tempo richiede la lezione «Iterazione sui valori degli enum»?
La maggior parte delle lezioni CoddyKit richiede circa 5–10 minuti. Ogni lezione è breve e interattiva, quindi fai progressi costanti e riprendi esattamente da dove hai lasciato su web e app.
Posso scrivere ed eseguire codice in questa lezione C# Academy?
Sì. Ogni lezione C# Academy include un editor di codice integrato, quindi scrivi ed esegui codice reale direttamente nel tuo browser e ricevi feedback istantaneo dall'IA — nessuna configurazione locale necessaria.
Tutte le lezioni di questo corso
- Definizione e utilizzo degli enum
- Enum Flags e combinazioni bitwise
- Conversione e analisi degli enum
- Iterazione sui valori degli enum