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

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

C#のType.GetEnumName()メソッドは、現在の列挙型(enum)において、指定された値に対応する定数の名前を返します。列挙体の値からその名前を動的に取得したい場合に便利なメソッドです。

構文

このメソッドの構文は以下のとおりです。

public virtual string GetEnumName (object val);

引数valには、名前を取得したい値を指定します。戻り値として、その値に一致する定数名が文字列で返されます。

使用例1:基本的な使い方

まずは、Type.GetEnumName()メソッドを使った基本的な例を見てみましょう。

using System;
public class Demo {
   enum Vehicle {Car, Bus, Bike}
   public static void Main(){
       Vehicle v = Vehicle.Bike;
       Type type = v.GetType();
       string str = type.GetEnumName(v);
       Console.WriteLine("GetEnumName() to return the constant name = " + str);
   }
}

出力結果

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

GetEnumName() to return the constant name = Bike

この例では、Vehicle列挙型のBikeを引数として渡すことで、対応する定数名「Bike」が文字列として正しく取得できています。

使用例2:列挙型以外の型を指定した場合の挙動

続いて、列挙型ではない型に対してGetEnumName()メソッドを呼び出した場合の挙動を確認してみましょう。

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

出力結果

実行すると、次の出力が表示されます。

Not an enum!
System.ArgumentException

このように、対象となるTypeオブジェクトが列挙型でない場合はArgumentExceptionがスローされます。そのため、実際の開発ではtry-catchブロックによる例外処理を組み合わせることで、安全かつ堅牢なコードを実装することが推奨されます。

  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