クラスの継承とかせずに見かけ上メソッドを追加する機能だ。見かけ上ってのは使う側のコードがインスタンスメソッドを呼ぶときと同じように書けるとういこと。拡張メソッド中ではプライベートなメンバが使えない。
stringにHoge()と言うメソッドを追加してみよう。(なんかいい感じの追加したいメソッドが思い浮かばなかった(^^;))
拡張メソッドの最初の引数に拡張したいクラスと引数名、その頭にthisを付けておく。
public static class ExtensionString
{
public static String Hoge(this String str)
{
return "###" + str;
}
}
使う側は普通にインスタンスメソッドを呼ぶのと同じようにする。
string str = "あいうえお";
Debug.WriteLine(str.Hoge());
この拡張メソッドが有効な範囲は同じネームスーペスで違う場合は、usingで指定しておくと使えるようになる。
コメント