[C#] Intやstringの値をenumにキャストする方法


はじめに

Int型のデータや文字列を自身で用意したenumにキャストしたい場合の方法を備忘録として残します。

 

キャスト方法

事前にDaysというenumを用意しておきます。

 

文字列をenumにキャストする

class Program
{
    static void Main(string[] args)
    {
        Days foo = (Days)Enum.Parse(typeof(Days), "Tue");

        // The foo.ToString().Contains(",") check is necessary for enumerations marked with an [Flags] attribute
        if (!Enum.IsDefined(typeof(Days), foo) && !foo.ToString().Contains(","))
        {
            throw new InvalidOperationException($"Tru is not an underlying value of the YourEnum enumeration.");
        }

        Console.WriteLine(foo);
    }

    enum Days
    {
        Mon,
        Tue,
        Wed,
        Thu,
        Fri,
        Sat,
        Sun
    }
}

 

Intをenumにキャストする

class Program
{
    static void Main(string[] args)
    {
        Days foo = (Days)1;

        // The foo.ToString().Contains(",") check is necessary for enumerations marked with an [Flags] attribute
        if (!Enum.IsDefined(typeof(Days), foo) && !foo.ToString().Contains(","))
        {
            throw new InvalidOperationException($"Tru is not an underlying value of the YourEnum enumeration.");
        }

        Console.WriteLine(foo);
    }

    enum Days
    {
        Mon,
        Tue,
        Wed,
        Thu,
        Fri,
        Sat,
        Sun
    }
}

 

結果

上記どちらも、結果は下記の通りになりました。

Tue

 

最後に

かなりシンプルですね。

参考にしてもらえると幸いです。

C#C#,enum

Posted by Kunisura