はじめに
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
最後に
かなりシンプルですね。
参考にしてもらえると幸いです。