Leer en inglés

Compartir a través de


Enum.GetValues Método

Definición

Sobrecargas

GetValues(Type)

Recupera una matriz con los valores de las constantes de una enumeración especificada.

GetValues<TEnum>()

Recupera una matriz con los valores de las constantes de un tipo de enumeración especificado.

GetValues(Type)

Source:
Enum.cs
Source:
Enum.cs
Source:
Enum.cs

Recupera una matriz con los valores de las constantes de una enumeración especificada.

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

Parámetros

enumType
Type

Tipo de enumeración.

Devoluciones

Matriz que contiene los valores de las constantes de enumType.

Atributos

Excepciones

enumType es null.

enumType no es Enum.

El método se invoca por la reflexión en un contexto de solo reflexión.

o bien

enumType es un tipo de un ensamblado cargado en un contexto de solo reflexión.

.NET 8 y versiones posteriores: enumType es un tipo de enumeración con respaldo booleano.

Ejemplos

En el siguiente ejemplo se muestra el uso de 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

Comentarios

Los elementos de la matriz se ordenan por los valores binarios de las constantes de enumeración (es decir, por su magnitud sin signo). En el ejemplo siguiente se muestra información sobre la matriz devuelta por el GetValues método para una enumeración que incluye un valor negativo, cero y un valor 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

El GetValues método devuelve una matriz que contiene un valor para cada miembro de la enumType enumeración. Si varios miembros tienen el mismo valor, la matriz devuelta incluye valores duplicados. En este caso, llamar al GetName método con cada valor de la matriz devuelta no restaura los nombres únicos asignados a los miembros que tienen valores duplicados. Para recuperar correctamente todos los nombres de los miembros de enumeración, llame al GetNames método .

El GetValues método no se puede invocar mediante la reflexión en un contexto de solo reflexión. En su lugar, puede recuperar el valor de todos los miembros de enumeración mediante el Type.GetFields método para obtener una matriz de objetos que representan miembros de FieldInfo enumeración y, a continuación, llamar al FieldInfo.GetRawConstantValue método en cada elemento de la matriz. En el ejemplo siguiente se muestra esta técnica. Requiere que defina la enumeración siguiente en un ensamblado denominado Enumerations.dll:

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

El ensamblado se carga en un contexto de solo reflexión, se crea una instancia de un Type objeto que representa la Pets enumeración, se recupera una matriz de FieldInfo objetos y se muestran los valores de campo en la consola.

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

Se aplica a

.NET 10 y otras versiones
Producto Versiones
.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>()

Source:
Enum.cs
Source:
Enum.cs
Source:
Enum.cs

Recupera una matriz con los valores de las constantes de un tipo de enumeración especificado.

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

Parámetros de tipo

TEnum

Tipo de la enumeración.

Devoluciones

TEnum[]

Matriz que contiene los valores de las constantes de TEnum.

Excepciones

.NET 8 y versiones posteriores: TEnum es un tipo de enumeración con respaldo booleano.

Se aplica a

.NET 10 y otras versiones
Producto Versiones
.NET 5, 6, 7, 8, 9, 10