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

C#で列挙型(Enum)の型を取得する方法

C#で列挙型(Enum)の型情報を取得するには、GetType()メソッドを使用します。この記事では、実際のコード例を通じて、列挙型の型名や基になる型(Underlying Type)の取得方法をわかりやすく解説します。

列挙型の準備

まず、複数の列挙型の値を格納した配列を用意します。ここでは、.NET標準ライブラリに含まれる ConsoleColorDayOfWeek の2つの列挙型を使用します。

Enum[] values = { ConsoleColor.Blue, DayOfWeek.Sunday};

GetType()メソッドで型を取得する

列挙値の型を取得するには、各値に対してGetType()メソッドを呼び出します。

Type enumType = val.GetType();

さらに、Enum.GetUnderlyingType()メソッドを組み合わせることで、その列挙型が内部的に使用している基になる型(Int32など)も取得できます。

サンプルプログラム

以下は、列挙型のメンバー名・列挙型名・基になる型を一覧表示する完全なコード例です。

using System;

public class Demo {
   public static void Main() {
      Enum[] values = { ConsoleColor.Blue, DayOfWeek.Sunday};
      Console.WriteLine("{0,-5} {1, 10} {2,10}\n", "Member", "Enumeration", "UnderlyingType");
      foreach (var val in values)
      Info(val);
   }

   static void Info(Enum val) {
      Type enumType = val.GetType();
      Type underlyingType = Enum.GetUnderlyingType(enumType);
      Console.WriteLine("{0, -5} {1, 10} {2,10}", val, enumType.Name, underlyingType.Name);
   }
}

実行結果

Member Enumeration UnderlyingType

Blue ConsoleColor Int32
Sunday DayOfWeek Int32

コードのポイント

  • GetType():オブジェクトの実行時の型(System.Type)を返します。
  • Enum.GetUnderlyingType():列挙型が内部で使用している基本型(この例ではInt32)を返します。
  • enumType.Name:型の名前だけを文字列として取得します。

このように、GetType()メソッドとEnumクラスの静的メソッドを組み合わせることで、列挙型に関する詳細な型情報を簡単に取得できます。デバッグやログ出力、動的な型処理を行う際に非常に便利なテクニックです。

  1. C#でファイルの最終書き込み時刻を取得する方法

    C#でファイルの最終書き込み時刻(Last Write Time)を取得するには、LastWriteTime プロパティを使用します。このプロパティは、FileInfo クラスと DateTime クラスと組み合わせて使うのが一般的です。まず、FileInfo オブジェクトを作成し、そこから DateTime 型の値として各種タイムスタンプを取得します。FileInfo file = new FileInfo(amit.txt); DateTime dt = file.CreationTime; dt = file.LastWriteTime;サンプルコード以下に、ファイルの作成時刻・最終アク

  2. C#でドライブ名を取得する方法:DriveInfoクラスの使い方を解説

    C#でドライブ名を取得するには?C#では、System.IO名前空間に含まれるDriveInfoクラスを使用することで、コンピューターに接続されたドライブの情報を簡単に取得できます。ドライブ名を表示したい場合は、まず対象となるドライブを指定してDriveInfoオブジェクトを作成しましょう。手順1:対象のドライブを指定する名前を表示したいドライブを引数に指定して、DriveInfoのインスタンスを生成します。以下の例ではCドライブを指定しています。DriveInfo info = new DriveInfo(C);手順2:Nameプロパティでドライブ名を取得するドライブ名を取得するには、Nam