Enum.GetValues(Type) Enum.GetValues(Type) Enum.GetValues(Type) Enum.GetValues(Type) Method

定義

指定した列挙体に含まれている定数の値の配列を取得します。Retrieves an array of the values of the constants in a specified enumeration.

public:
 static Array ^ GetValues(Type ^ enumType);
[System.Runtime.InteropServices.ComVisible(true)]
public static Array GetValues (Type enumType);
static member GetValues : Type -> Array
Public Shared Function GetValues (enumType As Type) As Array

パラメーター

enumType
Type Type Type Type

列挙型。An enumeration type.

戻り値

enumType に含まれている定数の値を格納する配列。An array that contains the values of the constants in enumType.

例外

enumTypeEnum ではありません。enumType is not an Enum.

リフレクションのみのコンテキストでのリフレクションによって、メソッドが呼び出されますThe method is invoked by reflection in a reflection-only context, - または --or- enumType は、リフレクションのみのコンテキストで読み込まれたアセンブリに基づく型です。enumType is a type from an assembly loaded in a reflection-only context.

次の例は、GetValuesの使用方法を示しています。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
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

注釈

配列の要素は、列挙定数のバイナリ値 (つまり、符号なしの大きさ) によって並べ替えられます。The elements of the array are sorted by the binary values of the enumeration constants (that is, by their unsigned magnitude). 次の例では、負の値、0、正の値を含む列挙体に対して、GetValuesメソッドによって返される配列に関する情報を表示します。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
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

GetValuesメソッドは、 enumType列挙体の各メンバーの値を格納する配列を返します。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. この場合、返された配列内の各値を使用してGetNameメソッドを呼び出すと、重複する値を持つメンバーに割り当てられた一意の名前は復元されません。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. 列挙メンバーのすべての名前を正常に取得するには、GetNamesメソッドを呼び出します。To retrieve all the names of enumeration members successfully, call the GetNames method.

リフレクションのみのコンテキストでは、リフレクションを使用してGetValuesメソッドを呼び出すことはできません。The GetValues method cannot be invoked by using reflection in a reflection-only context. 代わりに、Type.GetFieldsメソッドを使用して列挙体のメンバーを表すオブジェクトのFieldInfo配列を取得し、配列の各要素に対してFieldInfo.GetRawConstantValueメソッドを呼び出すことで、すべての列挙体メンバーの値を取得できます。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. このためには、Enumerations.dll という名前のアセンブリに次の列挙型を定義する必要があります。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> Public Enum Pets As Integer
   None = 0
   Dog = 1
   Cat = 2
   Rodent = 4
   Bird = 8
   Fish = 16
   Reptile = 32
   Other = 64
End Enum   

アセンブリはリフレクションのみのコンテキストで読み込まれます。Pets列挙体を表すTypeオブジェクトがインスタンス化され、FieldInfoオブジェクトの配列が取得され、フィールド値がコンソールに表示されます。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
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

適用対象