Enum と拡張メソッド <3

Enum と拡張メソッドって相性がいいですね。MSDN ライブラリでも取り上げられてますけど。

enum MyEnum { A, B } と定義した enum を文字列化するときに日本語にしたいことがよくあって、static な関数を書いてたけど、拡張メソッドでちょっとだけきれいになりますね。

using System;

class Program
{
  static void Main()
  {
    var e = MyEnum.A;

    Console.WriteLine( e.ToString() );
    Console.WriteLine( e.ToStringExt() );

    Console.ReadKey();
  }
}

public enum MyEnum { A, B }

public static class MyEnumExt
{
  public static string ToStringExt( this MyEnum e )
  {
    switch ( e )
    {
    case MyEnum.A: return "え〜";
    case MyEnum.B: return "びぃ";
    default: throw new ArgumentOutOfRangeException( "e" );
    }
  }
}

拡張メソッドの名前は ToString だと enum の ToString が呼ばれてしまったので、ToStringExt にしました。無念。
enum の ToString はめちゃくちゃ遅いのでご注意を。MSDN ライブラリにも明記されています。↑の拡張メソッドと ToString のマイクロベンチしてみたら、拡張メソッドのほうが878倍ハヤカッタ。