C# 入門

ホーム > C# の基礎 > 拡張メソッド

拡張メソッド

拡張メソッド (Extension method) を使うと既存のクラス (型) に対して、 派生クラスを作ったり、再コンパイルしたり、あるいは元となるクラスを変更するなどといったことをせずに、 メソッドを追加することが可能になります。

拡張メソッドは特殊なタイプのスタティックメソッドですが、 拡張された型のインスタンスメソッドのような形で呼び出すことが可能です。

これがどういう意味か、具体的な例を示します。

具体例: string 型を拡張する

ご存知の通り string 型というのは、C# の言語に組み込まれていますね。

この string を拡張して、例えば 「Popup メソッド」などというメソッドを追加して、 ある文字列のポップアップメッセージを表示するメソッドを作りましょう。

拡張メソッドを使うと次のように実装できます。

using System.Windows.Forms;

namespace Extension1
{
	public static class StringExtension
	{
		public static void Popup(
			this string s, 
			string title = "")
		{
			MessageBox.Show(s, title);
		}
	}

	class Program
	{
		static void Main(string[] args)
		{
			string t = "Hello";
			t.Popup("Extension Method Test");
		}
	}
}

これを実行すると次のようになります。

C# の拡張メソッド

ポイントは次の通りです。

  • 拡張メソッドは非ジェネリックスタティッククラス (nongeneric static class) に実装する
  • 拡張メソッドを実装するクラスは名前空間のルートレベルに存在すること
  • 拡張メソッドはスタティックメソッドであること (スタティッククラス内のメソッドなので強制的にそうなる)
  • this で修飾されるタイプが拡張される
ホーム > C# の基礎 > 拡張メソッド