ホームに戻る
出典 :
目次 :
拡張メソッドとは
既存のクラス定義に手を加えることなく、インスタンスメソッドを疑似的に追加できる機構のこと。
以下に留意する必要がある。
- 拡張メソッドは静的クラス中に作成する
- 拡張メソッドは静的メソッドとして作成する
- 拡張メソッドが実行されるインスタンス(自分自身 : this)を第1引数として受け取る
(呼び出す際に明示的に渡す必要は無い)
メソッドの定義
CheckedListBox に拡張メソッドを追加する場合を考える。
// 拡張メソッド実装用の静的クラス
static class ExtensionMethods
{
// 拡張メソッド
// CheckedListBox の全項目のチェック状態を切り替える
public static void CheckAllCheckBoxes(this CheckedListBox source, bool value)
{
for (int i = 0; i < source.Items.Count; i++)
{
source.SetItemChecked(i, value);
}
}
}
拡張メソッド CheckAllCheckBoxes() の第1引数 source は this 修飾された CheckedListBox であり、呼び出された際に暗黙的にメソッドに渡される。
メソッドの呼び出し
checkedListBox1.CheckAllCheckBoxes(true);
拡張メソッドは CheckedListBox のインスタンスメソッドとして呼び出すことができる。
第1引数にはインスタンス checkedListBox1 自身が自動的に渡されるため、実引数としては記述しない。
余談
拡張メソッドは.NETの機能であるため、Visual Basicでも使用できる。詳細は出典元を参照。