delegate という単語は「委譲」という意味からも、その役割がイメージできると思います。メソッドを delegate に複数割り当てることで、複数処理をまとめることもできます。
1つの delegate オブジェクトに 1 つのメソッドを割り当てる例です。
public partial class Form1 : Form { public delegate void myDelegate(string _text); private void button1_Click(object sender, EventArgs e) { // new 演算子でデリゲートオブジェクトを生成 myDelegate myDel = new myDelegate(myFunc1); // メソッドの呼び出し myDel("テストデリゲート 1"); // 暗黙的にデリゲートオブジェクトを生成 myDelegate myDel2 = myFunc1; // メソッドの呼び出し myDel2("テストデリゲート 2"); } private void myFunc1(string textArg) { Debug.WriteLine(textArg); } }
続いて、1 つの delegate に複数のメソッドを登録する例です。複数のメソッド登録には += 演算子を利用します。また、delegate ではインスタンスメソッド、static メソッドを取ることができます。下記では myStaticFunc1 という static メソッドも登録しています。
public partial class Form1 : Form { public delegate void myDelegate(string _text); private void button1_Click(object sender, EventArgs e) { // 複数のメソッドをデリゲート myDelegate myDel = new myDelegate(myFunc1); myDel += myFunc2; myDel += myStaticFunc1; myDel("複数呼び出し"); } private void myFunc1(string textArg) { Debug.WriteLine(textArg); } private void myFunc2(string textArg) { Debug.WriteLine(textArg); } private static void myStaticFunc1(string textArg) { Debug.WriteLine(textArg); } }
参考:
MSDN - Delegate クラス
リンク:
C# プログラミング
0 件のコメント:
コメントを投稿