NinaLabo

個人ゲーム開発者の技術メモ

C#で Enum(列挙型)と 数値や文字列 との変換まとめ

こんな Enum(列挙型)があるとして、 
public enum ItemType
{
    Weapon = 1,
    Shield = 2,
}

Enum (列挙型)→ 文字列

ItemType.Weapon.ToString()

Enum (列挙型)→ 数値

int itemTypeNo = (int)ItemType.Weapon;

文字列 → Enum (列挙型)

ItemType type = Enum.Parse (typeof(ItemType), "Weapon");

 すぐ忘れてしまうので、こんな Utilメソッドを用意しておくと便利かも。

public static TEnum ConvertToEnum<TEnum> (string value)
{
    return (TEnumEnum.Parse (typeof (TEnum), value);
}

数値 → Enum (列挙型)

ItemType type = (ItemType)Enum.ToObject (typeof (ItemType), 1);

 これも Utilメソッドを用意するとこんな感じでしょうか。

public static TEnum ConvertToEnum<TEnum> (int number)
{
    return (TEnum)Enum.ToObject (typeof(TEnum), number);
}

データベース上のアイテムタイプなどの項目を数値ではなく文字列で定義しておいて、Enumに変換してプログラム側で使ったりしています。