Leggere in inglese

Condividi tramite


Enum.GetValues Metodo

Definizione

Overload

GetValues(Type)

Restituisce una matrice dei valori delle costanti in una enumerazione specificata.

GetValues<TEnum>()

Recupera una matrice dei valori delle costanti in un tipo di enumerazione specificato.

GetValues(Type)

Origine:
Enum.cs
Origine:
Enum.cs
Origine:
Enum.cs

Restituisce una matrice dei valori delle costanti in una enumerazione specificata.

C#
public static Array GetValues(Type enumType);
C#
[System.Runtime.InteropServices.ComVisible(true)]
public static Array GetValues(Type enumType);

Parametri

enumType
Type

Tipo di enumerazione.

Restituisce

Matrice che contiene i valori delle costanti in enumType.

Attributi

Eccezioni

enumType è null.

enumType non è un elemento Enum.

Il metodo viene richiamato tramite reflection in un contesto di sola reflection,

-oppure-

enumType è un tipo di un assembly caricato in un contesto di sola reflection.

.NET 8 e versioni successive: enumType è un tipo di enumerazione booleano supportato.

Esempio

Nell'esempio seguente viene illustrato l'uso di GetValues.

C#
using System;

public class GetValuesTest {
    enum Colors { Red, Green, Blue, Yellow };
    enum Styles { Plaid = 0, Striped = 23, Tartan = 65, Corduroy = 78 };

    public static void Main() {

        Console.WriteLine("The values of the Colors Enum are:");
        foreach(int i in Enum.GetValues(typeof(Colors)))
            Console.WriteLine(i);

        Console.WriteLine();

        Console.WriteLine("The values of the Styles Enum are:");
        foreach(int i in Enum.GetValues(typeof(Styles)))
            Console.WriteLine(i);
    }
}
// The example produces the following output:
//       The values of the Colors Enum are:
//       0
//       1
//       2
//       3
//
//       The values of the Styles Enum are:
//       0
//       23
//       65
//       78

Commenti

Gli elementi della matrice vengono ordinati in base ai valori binari delle costanti di enumerazione, ovvero in base alla loro grandezza senza segno. Nell'esempio seguente vengono visualizzate informazioni sulla matrice restituita dal metodo per un'enumerazione GetValues che include un valore negativo, zero e un valore positivo.

C#
using System;

enum SignMagnitude { Negative = -1, Zero = 0, Positive = 1 };

public class Example
{
   public static void Main()
   {
      foreach (var value in Enum.GetValues(typeof(SignMagnitude))) {
         Console.WriteLine("{0,3}     0x{0:X8}     {1}",
                           (int) value, ((SignMagnitude) value));
}   }
}
// The example displays the following output:
//         0     0x00000000     Zero
//         1     0x00000001     Positive
//        -1     0xFFFFFFFF     Negative

Il GetValues metodo restituisce una matrice contenente un valore per ogni membro dell'enumerazione enumType . Se più membri hanno lo stesso valore, la matrice restituita include valori duplicati. In questo caso, la chiamata al GetName metodo con ogni valore nella matrice restituita non ripristina i nomi univoci assegnati ai membri con valori duplicati. Per recuperare tutti i nomi dei membri di enumerazione correttamente, chiamare il GetNames metodo .

Impossibile richiamare il GetValues metodo usando la reflection in un contesto di sola reflection. È invece possibile recuperare il valore di tutti i membri dell'enumerazione usando il Type.GetFields metodo per ottenere una matrice di FieldInfo oggetti che rappresentano i membri dell'enumerazione e quindi chiamare il FieldInfo.GetRawConstantValue metodo su ogni elemento della matrice. Nell'esempio seguente viene illustrata questa tecnica. È necessario definire l'enumerazione seguente in un assembly denominato Enumerations.dll:

C#
[Flags] enum Pets { None=0, Dog=1, Cat=2, Rodent=4, Bird=8,
                    Fish=16, Reptile=32, Other=64 };

L'assembly viene caricato in un contesto di sola reflection, un oggetto che rappresenta l'enumerazione Pets viene creata un'istanza, viene Type recuperata una matrice di oggetti e i valori dei FieldInfo campi vengono visualizzati nella console.

C#
using System;
using System.Reflection;

public class Example
{
   public static void Main()
   {
      Assembly assem = Assembly.ReflectionOnlyLoadFrom(@".\Enumerations.dll");
      Type typ = assem.GetType("Pets");
      FieldInfo[] fields = typ.GetFields();

      foreach (var field in fields) {
         if (field.Name.Equals("value__")) continue;

         Console.WriteLine("{0,-9} {1}", field.Name + ":",
                                         field.GetRawConstantValue());
      }
   }
}
// The example displays the following output:
//       None:     0
//       Dog:      1
//       Cat:      2
//       Rodent:   4
//       Bird:     8
//       Fish:     16
//       Reptile:  32
//       Other:    64

Si applica a

.NET 10 e altre versioni
Prodotto Versioni
.NET Core 1.0, Core 1.1, Core 2.0, Core 2.1, Core 2.2, Core 3.0, Core 3.1, 5, 6, 7, 8, 9, 10
.NET Framework 1.1, 2.0, 3.0, 3.5, 4.0, 4.5, 4.5.1, 4.5.2, 4.6, 4.6.1, 4.6.2, 4.7, 4.7.1, 4.7.2, 4.8, 4.8.1
.NET Standard 1.0, 1.1, 1.2, 1.3, 1.4, 1.5, 1.6, 2.0, 2.1
UWP 10.0

GetValues<TEnum>()

Origine:
Enum.cs
Origine:
Enum.cs
Origine:
Enum.cs

Recupera una matrice dei valori delle costanti in un tipo di enumerazione specificato.

C#
public static TEnum[] GetValues<TEnum>() where TEnum : struct;

Parametri di tipo

TEnum

Tipo dell'enumerazione.

Restituisce

TEnum[]

Matrice che contiene i valori delle costanti in TEnum.

Eccezioni

.NET 8 e versioni successive: TEnum è un tipo di enumerazione booleano supportato.

Si applica a

.NET 10 e altre versioni
Prodotto Versioni
.NET 5, 6, 7, 8, 9, 10