拡張メソッドでenumを拡張
ってのも出来るのか。Javaのenumよりスマートじゃない気がするけど、これでJavaのenumっぽいこと + null安全が実現できる!
public enum SampleEnum { Hoge, Piyo, Foo, Bar } public static class SampleEnumExtension { // enumのToStringは遅いので独自実装 public static string ToStr(this SampleEnum e) { switch (e) { case SampleEnum.Hoge: return "Hoge"; case SampleEnum.Piyo: return "Piyo"; case SampleEnum.Foo: return "Foo"; case SampleEnum.Bar: return "Bar"; // 追加しても遅いけど動くようにしておく default: return e.ToString(); } } // メソッドを追加 public static void Proc(this SampleEnum e) { Console.WriteLine(e.ToStr().ToLower()); } }
SampleEnum.Hoge.Proc(); // hoge // enumは値型だからnull安全! //SampleEnum e = null;