英語で読む

次の方法で共有


Enum.GetValues メソッド

定義

オーバーロード

GetValues(Type)

指定した列挙体に含まれている定数の値の配列を取得します。

GetValues<TEnum>()

指定した列挙型に含まれている定数の値の配列を取得します。

GetValues(Type)

ソース:
Enum.cs
ソース:
Enum.cs
ソース:
Enum.cs

指定した列挙体に含まれている定数の値の配列を取得します。

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

パラメーター

enumType
Type

列挙型。

戻り値

enumType に含まれている定数の値を格納する配列。

属性

例外

enumTypenullです。

enumTypeEnum ではありません。

リフレクションのみのコンテキストでのリフレクションによって、メソッドが呼び出されます

- または -

enumType は、リフレクションのみのコンテキストで読み込まれたアセンブリに基づく型です。

.NET 8 以降のバージョン: enumType は、ブール型に基づく列挙型です。

次の例は、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

注釈

配列の要素は、列挙定数のバイナリ値 (つまり、符号なしの大きさ) で並べ替えられます。 次の例では、負の値、0、正の値を含む列挙体に対して、GetValuesメソッドによって返される配列に関する情報を表示します。

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

GetValuesメソッドは、 enumType列挙体の各メンバーの値を格納する配列を返します。 複数のメンバーが同じ値を持つ場合、返される配列には重複する値が含まれます。 この場合、返された配列内の各値を使用してGetNameメソッドを呼び出すと、重複する値を持つメンバーに割り当てられた一意の名前は復元されません。 列挙メンバーのすべての名前を正常に取得するには、GetNamesメソッドを呼び出します。

リフレクションのみのコンテキストでは、リフレクションを使用してGetValuesメソッドを呼び出すことはできません。 代わりに、Type.GetFieldsメソッドを使用して列挙体のメンバーを表すオブジェクトのFieldInfo配列を取得し、配列の各要素に対してFieldInfo.GetRawConstantValueメソッドを呼び出すことで、すべての列挙体メンバーの値を取得できます。 次の例は、この手法を示しています。 このためには、Enumerations.dll という名前のアセンブリに次の列挙型を定義する必要があります。

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

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

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

適用対象

.NET 10 およびその他のバージョン
製品 バージョン
.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>()

ソース:
Enum.cs
ソース:
Enum.cs
ソース:
Enum.cs

指定した列挙型に含まれている定数の値の配列を取得します。

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

型パラメーター

TEnum

列挙体の型。

戻り値

TEnum[]

TEnum に含まれている定数の値を格納する配列。

例外

.NET 8 以降のバージョン: TEnum は、ブール型に基づく列挙型です。

適用対象

.NET 10 およびその他のバージョン
製品 バージョン
.NET 5, 6, 7, 8, 9, 10