Edit

Share via


Enum.GetValues Method

Definition

Overloads

GetValues(Type)

Retrieves an array of the values of the constants in a specified enumeration.

GetValues<TEnum>()

Retrieves an array of the values of the constants in a specified enumeration type.

GetValues(Type)

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

Retrieves an array of the values of the constants in a specified enumeration.

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

Parameters

enumType
Type

An enumeration type.

Returns

An array that contains the values of the constants in enumType.

Attributes

Exceptions

enumType is null.

enumType is not an Enum.

The method is invoked by reflection in a reflection-only context,

-or-

enumType is a type from an assembly loaded in a reflection-only context.

.NET 8 and later versions: enumType is a Boolean-backed enumeration type.

Examples

The following example illustrates the use of 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

Remarks

The elements of the array are sorted by the binary values of the enumeration constants (that is, by their unsigned magnitude). The following example displays information about the array returned by the GetValues method for an enumeration that includes a negative value, zero, and a positive value.

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

The GetValues method returns an array that contains a value for each member of the enumType enumeration. If multiple members have the same value, the returned array includes duplicate values. In this case, calling the GetName method with each value in the returned array does not restore the unique names assigned to members that have duplicate values. To retrieve all the names of enumeration members successfully, call the GetNames method.

The GetValues method cannot be invoked by using reflection in a reflection-only context. Instead, you can retrieve the value of all enumeration members by using the Type.GetFields method to get an array of FieldInfo objects that represent enumeration members and then call the FieldInfo.GetRawConstantValue method on each element of the array. The following example illustrates this technique. It requires that you define the following enumeration in an assembly named Enumerations.dll:

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

The assembly is loaded in a reflection-only context, a Type object that represents the Pets enumeration is instantiated, an array of FieldInfo objects is retrieved, and the field values are displayed to the 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

Applies to

.NET 10 and other versions
Product Versions
.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

Retrieves an array of the values of the constants in a specified enumeration type.

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

Type Parameters

TEnum

The type of the enumeration.

Returns

TEnum[]

An array that contains the values of the constants in TEnum.

Exceptions

.NET 8 and later versions: TEnum is a Boolean-backed enumeration type.

Applies to

.NET 10 and other versions
Product Versions
.NET 5, 6, 7, 8, 9, 10