2007年08月16日

C#3.0:拡張メソッド

   このエントリーをはてなブックマークに追加 Clip to Evernote
C#3.0:拡張メソッド

例えば、単語の先頭を大文字に変換する ToTitleCaseメソッドを作成したいという要求があったとします。
そういう場合は、StringUtilsとかいうクラスを作成し、そこに、staticメソッドを用意するのが、一般的でした。
しかし、System.Stringクラスに追加できれば、もっと使い勝手が良くなります。C#3.0では、拡張メソッドを使うことで、
string s = "microsoft";
Console.WriteLine(s.ToTitleCase());

という記述が可能になります。
ToTitleCase 側は、以下のようなコードになります。

static class StringExtensions {
public static string ToTitleCase(this string s) {
var cultureInfo = System.Threading.Thread.CurrentThread.CurrentCulture;
var textInfo = cultureInfo.TextInfo;
return s = textInfo.ToTitleCase(s);
}
}

拡張メソッドにするには、staticメソッドにすること、最初の引数は、this指定することが必要です。
ようは、コンパイラが、
Console.WriteLine(s.ToTitleCase());

というコードを
Console.WriteLine(StringExtensions.ToTitleCase(s));

に置き換えてくれるわけですね。

もちろん、引数を取るメソッドやジェネリックメソッドを拡張メソッドとして定義することもできます。



 

この記事へのトラックバックURL

http://trackback.blogsys.jp/livedoor/gushwell/51056456