delegateは複数のメソッドを登録できるので、メソッドを追加したり削除したりする。
using System;
class MainClass
{
//delegateを定義
delegate int SampleDelegate(int a);
class SampleClass
{
public int sampleMethod(int n)
{
return n + 1;
}
public int sampleMethod1(int n)
{
return n + 10;
}
}
public static void Main()
{
// SampleClassのインスタンス化
SampleClass s = new SampleClass();
/* SampleDelegate型の変数delegateVar
* にSampleClassのsampleMethodを代入 */
SampleDelegate delegateVar = s.sampleMethod;
// delegateVarにsampleMethod1を追加
delegateVar += s.sampleMethod1;
// sampleMethodとsampleMethod1を実行
/* 最後に実行されたメソッド(sampleMethod1)の
* 戻り値とパラメータが返される
* 出力値:11 */
Console.WriteLine(delegateVar(1));
// delegateVarからsampleMethod1を削除
delegateVar -= s.sampleMethod1;
// sampleMethodを実行
// 出力値:2
Console.WriteLine(delegateVar(1));
}
}
0 コメント:
コメントを投稿