文字列や数値からEnumに変換する

もくじ

目次(WPF/xaml/C#/C++関連メモ) - tera1707’s blog

やりたいこと

Enumで定義した値の名前から、Enumの値に直したいなと思ったときに、 intの値をEnumに直すなら

var a = (MyEnum)0;

みたいな感じで直せばよいと知っていたが、

enum MyEnum
{
    Gundam,
    Zaku,
    Goggu,
}

というEnumがあったときに、"Gundam"という文字列を‘MyEnum.Gundam‘に直そうと思ったらどうしたらよいのだったか??となったので、調べたことをメモする。

やりかた

Enum.Parse メソッドを使う。

docs.microsoft.com

前提

下記環境で確認。

VisualStudio2022/.NET6/C#10

サンプル

Enumクラスには、いろんなメソッドがあるようだが、パッと見た感じ、下記あたりが使い勝手よさそう。

MyEnum a;

// int → Enum その①
a = (MyEnum)0;
// -> Gundam

// int → Enum その②
a = (MyEnum)Enum.ToObject(typeof(MyEnum), 2);
Console.WriteLine(a);
// -> Goggu

// 文字列(Enum値の名前) → Enum
a = Enum.Parse<MyEnum>("Gundam");
Console.WriteLine(a);
// -> Gundam

// 文字列(Enum値の名前/大文字小文字無視) → Enum
a = Enum.Parse<MyEnum>("gUNDAM", true);
Console.WriteLine(a);
// -> Gundam

// 文字列(Enum値) → Enum
a = Enum.Parse<MyEnum>("1");
Console.WriteLine(a);
// -> Zaku



enum MyEnum
{
    Gundam,
    Zaku,
    Goggu,
}

参考

docs.microsoft.com

qiita.com