C#
 Computer >> コンピューター >  >> プログラミング >> C#

C#のEnum.GetValuesメソッドで列挙型のすべての値を取得する方法

C#のEnum.GetValuesメソッドは、指定した列挙型(enum)に含まれる定数の値を、配列として取得するためのメソッドです。この記事では、GetValuesメソッドの基本的な使い方をサンプルコードとともに解説します。

Enum.GetValuesメソッドとは

列挙型には複数の定数が定義されていますが、そのすべての値をまとめて取得したい場合に、Enum.GetValues()が役立ちます。戻り値はArray型であるため、foreachループなどを使って各要素へ簡単にアクセスできます。

サンプルで使う列挙型の定義

まず、次のような列挙型を用意します。

enum Rank { Jack = 10, Tom = 19, Tim = 26 };

この例では、3つの定数「Jack」「Tom」「Tim」に、それぞれ10、19、26という値が割り当てられています。

GetValuesメソッドで値を取得して表示する

Enum.GetValues(typeof(Rank))と記述することで、Rank列挙型のすべての値を配列として取得できます。取得した配列をforeachループで回し、各値をコンソールに出力してみましょう。

foreach(int res in Enum.GetValues(typeof(Rank))) {
    Console.WriteLine(res);
}

完全なサンプルコード

以下に、ここまでの内容をまとめた完全なプログラム例を示します。

using System;
public class Demo {
    enum Rank { Jack = 10, Tom = 19, Tim = 26 };
    public static void Main() {
        Console.WriteLine("Here are the university rank of MCA Students College ABC:");
        foreach(int res in Enum.GetValues(typeof(Rank))) {
            Console.WriteLine(res);
        }
    }
}

実行結果

このプログラムを実行すると、次のように列挙型に割り当てられた値がすべて出力されます。

Here are the university rank of MCA Students College ABC:
10
19
26

補足:名前も一緒に取得したい場合

値だけでなく定数名も取得したい場合は、Enum.GetName()ToString()を組み合わせると便利です。

foreach(Rank res in Enum.GetValues(typeof(Rank))) {
    Console.WriteLine($"{res} = {(int)res}");
}

このようにループ変数の型を列挙型そのものにすれば、名前と値の両方を扱えるようになり、より柔軟な処理が可能になります。

まとめ

Enum.GetValuesメソッドを使えば、列挙型に定義されたすべての定数の値を簡単に配列として取得できます。typeof演算子で対象の列挙型を指定し、foreachループで各要素を処理するのが基本的なパターンです。列挙型の内容を一覧表示したり、動的に処理したりする際にぜひ活用してください。

  1. C#のCompareTo()メソッドの使い方を解説

    C#では、2つの値を比較する際にCompareTo()メソッドを使用します。このメソッドは、呼び出し元の値と引数で渡した値を比較し、その大小関係を整数値として返します。CompareTo()メソッドの戻り値CompareTo()メソッドの戻り値は以下の3パターンです。0 = 両方の値が等しい場合1 = 呼び出し元の値が引数の値より大きい場合(第2の数値が小さい)-1 = 呼び出し元の値が引数の値より小さい場合(第1の数値が小さい)CompareTo()メソッドの実装例それでは、C#でCompareTo()メソッドを実装するサンプルコードを見てみましょう。ここでは、同じ値を持つ2つのint型変数

  2. Javaのメソッド内に列挙型(enum)は定義できる?エラーの原因と正しい書き方を解説

    Javaの列挙型(enum)は、名前付き定数をひとつのグループとしてまとめて扱うための仕組みです。基本的な構文は以下のとおりです。enum Days { SUNDAY, MONDAY, TUESDAY, WEDNESDAY, THURSDAY, FRIDAY, SATURDAY }列挙型はクラスの中であれば定義できますが、メソッドの中で定義することはできません。メソッド内にenumを記述すると、コンパイル時に「enum types must not be local(列挙型はローカルにしてはならない)」というコンパイルエラーが発生します。エラーになるコード例次のように、メソッド内に直接