Enumerare un Enum in C#
-
Metodo
Enum.GetNames()
per enumerareenum
-
Metodo
Enum.GetValues()
per enumerareenum
inC#
- Altri esempi
- Osservazioni:
Questo tutorial introduce come enumerare un tipo enum
in C# e lo dimostra attraverso una lista di esempi di codice.
Nel tutorial precedente, abbiamo imparato come recuperare il valore int
da enum
usando C#. Come menzionato nell’ultimo tutorial, Enumerazione
o enum
è un tipo di valore definito dall’utente che definisce un insieme di costanti denominate del tipo intero sottostante.
Sappiamo che la sintassi comune per enum
è la seguente:
enum<enum_name> { enumeration_list }
;
enum_name
specifica il nome del tipo di enumerazione e enumeration_list
specifica una lista di identificatori separati da virgole.
Successivamente, vedremo come scorrere o enumerare tutti i valori enum
in C#. Esistono diversi modi per enumerare un enum
. I seguenti esempi illustreranno questi modi.
Metodo Enum.GetNames()
per enumerare enum
Lo scopo è ottenere un array di nomi delle costanti nella lista di enumerazione
utilizzando il metodo Enum.GetName()
. Stampa l’array di nomi usando il bucle foreach
.
using System;
public class Example1 {
public enum Fruits { Apple, Banana, Orange, Watermelon, Mango, Strawberry }
public static void Main() {
foreach (string fruit in Enum.GetNames(typeof(Fruits))) {
Console.WriteLine(fruit);
}
}
}
Produzione:
Apple Banana Orange Watermelon Mango Strawberry
Metodo Enum.GetValues()
per enumerare enum
in C#
Un altro approccio consiste nell’usare il metodo Enum.GetValues()
che recupera un array dei valori delle costanti nell’lista di enumerazione. Inoltre stampa ogni valore usando il bucle foreach
.
using System;
public class Example2 {
public enum Subjects { Maths, Biology, English, Chemistry, Physics, History }
public static void Main() {
foreach (Subjects sub in Enum.GetValues(typeof(Subjects))) {
Console.WriteLine(sub);
}
}
}
Produzione:
Maths Biology English Chemistry Physics History
Discutiamo alcuni altri esempi per avere un quadro completo dell’uso del metodo Enum.GetValues()
.
Altri esempi
Esempio 1:
using System;
public class Demo1 {
enum Colors { White, Black, Red, Green, Blue }
;
enum Planets { Earth = 0, Jupiter = 10, Saturn = 20, Mars = 30, Venus = 40 }
;
public static void Main() {
Console.WriteLine("The list of Colors Enum are:");
foreach (int i in Enum.GetValues(typeof(Colors))) Console.WriteLine(i);
Console.WriteLine();
Console.WriteLine("The list of Planets Enum are:");
foreach (int i in Enum.GetValues(typeof(Planets))) Console.WriteLine(i);
}
}
Produzione:
The list of Colors Enum are : 0 1 2 3 4
The list of Planets Enum are : 0 10 20 30 40
Nella prima parte dell’esempio precedente, gli elementi dell’array sono ordinati in base ai valori binari (cioè i valori senza segno) delle costanti di enumerazione
.
Esempio 2:
using System;
enum SignValue { NegativeVal = -1, ZeroVal = 0, PositiveVal = 1 }
;
public class MainValue {
public static void Main() {
foreach (var val in Enum.GetValues(typeof(SignValue))) {
Console.WriteLine("{0,3} 0X{0:X8} {1}", (int)val, ((SignValue)val));
}
}
}
Produzione:
0 ZeroVal 0X00000000 1 PositiveVal 0X00000001 - 1 NegativeVal 0XFFFFFFFF
L’esempio sopra mostra le informazioni sull’array restituito dal metodo Enum.GetValues()
per l’lista di enumerazione che include valori zero, negativi e positivi.
Osservazioni:
Il metodo Enum.GetValues()
restituisce un array che contiene un valore per ogni elemento di enum
. se più elementi hanno lo stesso valore, la matrice generata include valori duplicati. In questo caso, la chiamata al metodo Enum.GetNames()
con ogni valore nell’array restituito non ripristina i nomi univoci assegnati agli elementi che hanno valori duplicati. Per recuperare correttamente i nomi di tutti i membri dell’enumerazione, si consiglia di chiamare il metodo Enum.GetNames()
.