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

C#のType.GetEnumNames()メソッドとは?使い方とサンプルコードを解説

C#におけるType.GetEnumNames()メソッドは、現在の列挙型(enum)に含まれるすべてのメンバーの名前を文字列配列として返すために使用されます。この記事では、基本的な構文から実際のコード例まで、具体的な使い方をわかりやすく解説します。

構文

Type.GetEnumNames()メソッドの基本構文は以下の通りです。

public virtual string[] GetEnumNames ();

戻り値はstring[]型であり、列挙型に定義されたすべての定数名が格納されます。

例1:列挙型以外に呼び出した場合

まず、string型のような列挙型以外の型に対してGetEnumNames()メソッドを呼び出した場合の例を見てみましょう。

using System;
public class Demo {
    enum Vehicle {Car, Bus, Bike}
    public static void Main(){
        try {
            Type type = typeof(string);
            string[] str = type.GetEnumNames();
            Console.WriteLine("GetEnumName() to return the constant name = " + str);
            Console.WriteLine("Listing constants ..");
            for (int i = 0; i < str.Length; i++)
            Console.Write("{0} ", str[i]);
        }
        catch (ArgumentException e){
            Console.WriteLine("Not an enum!");
            Console.Write("{0}", e.GetType(), e.Message);
        }
    }
}

出力結果

上記のコードを実行すると、以下の出力が得られます。

Not an enum!
System.ArgumentException

この結果からわかるように、対象が列挙型ではない場合にはArgumentException例外がスローされ、catchブロック内の処理が実行されます。このため、GetEnumNames()を呼び出す前に型が列挙型であるかどうかを確認するか、try-catchによる例外処理を適切に行うことが重要です。

例2:列挙型に呼び出した場合

次に、独自に定義したVehicle列挙型のインスタンスからGetEnumNames()メソッドを呼び出した場合の例を見てみましょう。

using System;
public class Demo {
    enum Vehicle {Car, Bus, Bike, airplane}
    public static void Main(){
        try {
            Vehicle v = Vehicle.Bike;
            Type type = v.GetType();
            string[] str = type.GetEnumNames();
            Console.WriteLine("GetEnumName() to return the constant name = " + str);
            Console.WriteLine("Listing constants ..");
            for (int i = 0; i < str.Length; i++)
                Console.Write("{0} ", str[i]);
        }
        catch (ArgumentException e){
            Console.WriteLine("Not an enum!");
            Console.Write("{0}", e.GetType(), e.Message);
        }
    }
}

出力結果

上記のコードを実行すると、以下の出力が得られます。

GetEnumName() to return the constant name = System.String[]
Listing constants ..
Car Bus Bike airplane

この例では、GetType()メソッドでVehicle列挙型のTypeオブジェクトを取得し、その後GetEnumNames()を呼び出しています。その結果、「Car」「Bus」「Bike」「airplane」という4つの定数名がすべて文字列配列として正しく取得できていることが確認できます。

まとめ

  • Type.GetEnumNames()は、列挙型に含まれるすべての定数名をstring[]型で返します。
  • 対象が列挙型でない場合、ArgumentExceptionがスローされるため、例外処理が必要です。
  • typeof演算子やGetType()メソッドで取得したTypeオブジェクトに対して呼び出すことができます。
  1. C#のType.GetArrayRank()メソッドの使い方を徹底解説

    C#におけるType.GetArrayRank()メソッドは、配列の次元数(ランク)を取得するためのメソッドです。多次元配列が何次元であるかをプログラム上で確認したい場合に便利な機能です。構文public virtual int GetArrayRank ();このメソッドは、対象の型が配列である場合にその次元数をint型で返します。戻り値の「ランク」とは、配列の角括弧内のカンマの数+1、つまり配列のインデックスの数を表します。使用例1:3次元配列のランクを取得するまずは、3次元のint型配列に対してType.GetArrayRank()メソッドを使用する基本的な例を見てみましょう。using

  2. C#のType.Equals()メソッドとは?使い方とサンプルコードを解説

    C#のType.Equals()メソッドは、現在のTypeインスタンスが表す基盤となるシステム型が、指定されたObjectまたはTypeの基盤となるシステム型と同一であるかどうかを判定します。リフレクション処理などで型同士を比較したい場合に役立つメソッドです。 構文 public virtual bool Equals (Type o); public override bool Equals (object o); パラメータ o:現在のTypeの基盤となるシステム型と比較する対象となるオブジェクトまたは型を指定します。 戻り値 両方の基盤システム型が同じ場合は true、異なる場合は fa