文字列からenum(列挙型)の値を取得する (stringをenumへ変換する)[C#]

enum(列挙型)のフィールド名(メンバー名、列挙子)からenum(列挙型)の値を取得する方法について紹介します。

enum(列挙型)とは、複数のフィールド(変数)をひとつにまとめて、一連の整数値を付けることができる型のことです。
enum(列挙型)で定義されるフィールド(変数)は、メンバーや列挙子(リスト)などと呼ばれます。

enum(列挙型)は、ユーザー(開発者)が独自に定義することができます。
また、System名前空間にあるDayOfWeekなどのように、.NETにあらかじめ用意されているものもあります。

enum(列挙型)の値を文字列から取得

enum(列挙型)の値を文字列(フィールド名)から取得するには、System名前空間にあるEnumクラスのParse静的メソッド、またはTryParse静的メソッドを使用します。

Parse静的メソッドの構文

Parse静的メソッドは、パラメーター(引数)に値を取得するenum(列挙型)の型(Type)と、変換する元になる文字列(フィールド名)を取ります。
戻り値には、変換したenum(列挙型)の値(フィールド値)を返します。

enumの型と文字列の2つのパラメーターを指定するParse静的メソッドは、指定された文字列に完全に一致する(大文字と小文字は区別される)フィールド(メンバー)を探して変換します。
指定された文字列がenum(列挙型)に変換できない場合は、「System.ArgumentException: 要求された値 ‘[指定した文字列]’ が見つかりませんでした。」という例外を発生させます。

Parse静的メソッドには、大文字と小文字を区別するかどうかを指定するオーバーロードも用意されています。

大文字と小文字を区別しない場合は3番目のパラメーターのignoreCaseにTrueを指定します。

TryParse静的メソッドの構文

TryParse静的メソッドは、型パラメーター(型引数)に値を取得するenum(列挙型)を取り、パラメーター(引数)に変換する元になる文字列(フィールド名)と、変換結果のenum(列挙型)の値(フィールド値)を取ります。
戻り値には変換できたかどうかを示す値をbool型の真偽値(True/False)で返します。

上記の構文のTryParse静的メソッドは、文字列が完全に一致する(大文字と小文字は区別される)場合にTrueを返し、outキーワードを指定したパラメーター(引数)に変換後のフィールド値を返します。

TryParse静的メソッドにも、Parse静的メソッドと同様に、大文字と小文字を区別するかどうかを指定するオーバーロードも用意されています。

TryParse静的メソッドでは、2番目のパラメーターのignoreCaseに大文字と小文字を区別するかどうかを示す値をbool値で指定します。

サンプルプログラム

ユーザー定義の列挙型(CustomEnum)とSystem.Windows.Forms名前空間にあるFormStartPosition列挙型を使って、フィールド名を表す文字列からフィールド値を取得します。

VisualStudioでWindowsフォームアプリケーションのプロジェクトを作成します。
Windowsフォームアプリケーションのプロジェクトを作成する方法については、以下の記事を参照してください。

Windowsフォームアプリケーションのプロジェクト(ソリューション)を作成する。[C#]
Visual StudioでC#のWindowsフォームアプリケーションのプロジェクト(ソリューション)を作成する方法を記載します。 ...

ユーザーインターフェース(画面デザイン)

フォームを作成し、enum(列挙型)のフィールド名を表す文字列を入力するテキストボックス(textBox1)と、列挙型の種類を選択するラジオボタンを2つ(radioButton1, radioButton2)と、文字列をフィールド値に変換するボタン(button1)を配置します。ボタンの横には、変換結果を表示するラベルを用意します。

文字列から列挙型の値を取得するサンプルフォームのデザイン

ソースコード

ボタンがクリックされた時のイベント処理をコーディングします。

上記のソースコードでは、指定した文字列が完全に一致する場合にenum(列挙型)の値を返すようにしています。

サンプルプログラムの実行

プロジェクトをビルドして実行(デバッグ)します。

文字列から列挙型の値を取得するサンプルの実行

テキストボックスにenum(列挙型)のフィールド名(メンバー名)を入力してボタンをクリックします。

文字列から列挙型の値を取得するサンプルの変換結果
変換された値がボタンの横のラベルに表示されます。