Enum.GetValues Method (Type)

 

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

Namespace:   System
Assembly:  mscorlib (in mscorlib.dll)

<ComVisibleAttribute(True)>
Public Shared Function GetValues (
	enumType As Type
) As Array

Parameters

enumType
Type: System.Type

An enumeration type.

Return Value

Type: System.Array

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

Exception Condition
ArgumentNullException

enumType is null.

ArgumentException

enumType is not an Enum.

InvalidOperationException

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.

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.

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.

TheGetValues 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> 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.

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

The following example illustrates the use of GetValues.

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

Universal Windows Platform
Available since 8
.NET Framework
Available since 1.1
Portable Class Library
Supported in: portable .NET platforms
Silverlight
Available since 5.0
Windows Phone Silverlight
Available since 8.0
Windows Phone
Available since 8.1
Return to top
Show: