FlagsAttributeを指定したenumの文字列
ものすごく小ネタですが、FlagsAttributeを指定したenumの文字列表現はどうなるんだろ?とふと気になって試してみました。
// トッピング [Flags] public enum Toppings { None = 0x00, // なし Nitamago = 0x01, // 煮卵 CharSiu = 0x02, // チャーシュー Menma = 0x04, // メンマ Moyashi = 0x08, // もやし }
出力してみます。フラグを組み合わせた場合はカンマ区切りの文字列となるようです。文字列の並びはenumの値順ですかね。
Console.WriteLine(Toppings.CharSiu); // CharSiu Console.WriteLine(Toppings.CharSiu | Toppings.Menma); // CharSiu, Menma Console.WriteLine(Toppings.CharSiu | Toppings.Nitamago | Toppings.Menma); // Nitamago, CharSiu, Menma Console.WriteLine(Toppings.None); // None
もちろんカンマ区切りの文字列をパースできると。
var toppings = default(Toppings); if (Enum.TryParse<Toppings>("CharSiu, Moyashi, Nitamago", out toppings)) { Console.WriteLine(toppings); // Nitamago, CharSiu, Moyashi }
どうでもいいことですが、あぶりメンマが好きです。