Enum.GetValues Method
Definition
Important
Some information relates to prerelease product that may be substantially modified before it’s released. Microsoft makes no warranties, express or implied, with respect to the information provided here.
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.
public:
static Array ^ GetValues(Type ^ enumType);
public static Array GetValues (Type enumType);
[System.Runtime.InteropServices.ComVisible(true)]
public static Array GetValues (Type enumType);
static member GetValues : Type -> Array
[<System.Runtime.InteropServices.ComVisible(true)>]
static member GetValues : Type -> Array
Public Shared Function GetValues (enumType As Type) As Array
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.
using namespace System;
enum class Colors
{
Red, Green, Blue, Yellow
};
enum class Styles
{
Plaid = 0,
Striped = 23,
Tartan = 65,
Corduroy = 78
};
int main()
{
Console::WriteLine( "The values of the Colors Enum are:" );
Array^ a = Enum::GetValues( Colors::typeid );
for ( Int32 i = 0; i < a->Length; i++ )
{
Object^ o = a->GetValue( i );
Console::WriteLine( "{0}", Enum::Format( Colors::typeid, o, "D" ) );
}
Console::WriteLine();
Console::WriteLine( "The values of the Styles Enum are:" );
Array^ b = Enum::GetValues( Styles::typeid );
for ( Int32 i = 0; i < b->Length; i++ )
{
Object^ o = b->GetValue( i );
Console::WriteLine( "{0}", Enum::Format( Styles::typeid, o, "D" ) );
}
}
// 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
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
open System
type Colors =
| Red = 0
| Green = 1
| Blue = 2
| Yellow = 3
type Styles =
| Plaid = 0
| Striped = 23
| Tartan = 65
| Corduroy = 78
printfn $"The values of the Colors Enum are:"
for i in Enum.GetValues typeof<Colors> do
printfn $"{i}"
printfn "\nThe values of the Styles Enum are:"
for i in Enum.GetValues typeof<Styles> do
printfn $"{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
Public Class GetValuesTest
Enum Colors
Red
Green
Blue
Yellow
End Enum 'Colors
Enum Styles
Plaid = 0
Striped = 23
Tartan = 65
Corduroy = 78
End Enum 'Styles
Public Shared Sub Main()
Console.WriteLine("The values of the Colors Enum are:")
Dim i As Integer
For Each i In [Enum].GetValues(GetType(Colors))
Console.WriteLine(i)
Next
Console.WriteLine()
Console.WriteLine("The values of the Styles Enum are:")
For Each i In [Enum].GetValues(GetType(Styles))
Console.WriteLine(i)
Next
End Sub
End Class
' 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.
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
open System
type SignMagnitude =
| Negative = -1
| Zero = 0
| Positive = 1
for value in Enum.GetValues typeof<SignMagnitude> do
printfn $"{value :?> int,3} 0x{value :?> int:X8} {value :?> SignMagnitude}"
// The example displays the following output:
// 0 0x00000000 Zero
// 1 0x00000001 Positive
// -1 0xFFFFFFFF Negative
Public Enum SignMagnitude As Integer
Negative = -1
Zero = 0
Positive = 1
End Enum
Module Example
Public Sub Main()
Dim values() As Integer = CType([Enum].GetValues(GetType(SignMagnitude)), Integer())
For Each value In values
Console.WriteLine("{0,3} 0x{0:X8} {1}",
value, CType(value, SignMagnitude).ToString())
Next
End Sub
End Module
' 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:
[Flags] enum Pets { None=0, Dog=1, Cat=2, Rodent=4, Bird=8,
Fish=16, Reptile=32, Other=64 };
[<Flags>]
type Pets =
| None = 0
| Dog = 1
| Cat = 2
| Rodent = 4
| Bird = 8
| Fish = 16
| Reptile = 32
| Other = 64
<Flags> Public Enum Pets As Integer
None = 0
Dog = 1
Cat = 2
Rodent = 4
Bird = 8
Fish = 16
Reptile = 32
Other = 64
End Enum
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.
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
open System
open System.Reflection
let assem = Assembly.ReflectionOnlyLoadFrom @".\Enumerations.dll"
let typ = assem.GetType "Pets"
let fields = typ.GetFields()
for field in fields do
if not (field.Name.Equals "value__") then
printfn $"""{field.Name + ":",-9} {field.GetRawConstantValue()}"""
// The example displays the following output:
// None: 0
// Dog: 1
// Cat: 2
// Rodent: 4
// Bird: 8
// Fish: 16
// Reptile: 32
// Other: 64
Imports System.Reflection
Module Example
Public Sub Main()
Dim assem As Assembly = Assembly.ReflectionOnlyLoadFrom(".\Enumerations.dll")
Dim typ As Type = assem.GetType("Pets")
Dim fields As FieldInfo() = typ.GetFields
For Each field In fields
If field.Name.Equals("value__") Then Continue For
Console.WriteLine("{0,-9} {1}", field.Name + ":",
field.GetRawConstantValue())
Next
End Sub
End Module
' The example displays the following output:
' None: 0
' Dog: 1
' Cat: 2
' Rodent: 4
' Bird: 8
' Fish: 16
' Reptile: 32
' Other: 64
Applies to
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.
public:
generic <typename TEnum>
where TEnum : value class static cli::array <TEnum> ^ GetValues();
public static TEnum[] GetValues<TEnum> () where TEnum : struct;
static member GetValues : unit -> 'Enum[] (requires 'Enum : struct)
Public Shared Function GetValues(Of TEnum As Structure) () As TEnum()
Type Parameters
- TEnum
The type of the enumeration.
Returns
An array that contains the values of the constants in TEnum
.
Exceptions
.NET 8 and later versions: TEnum
is a Boolean-backed enumeration type.