using System;
delegate void Sample(int n);
class MainClass
{
class SampleClass
{
public void Method1(int n)
{
Console.WriteLine(n);
}
public void Method2(int n)
{
Console.WriteLine(++n);
}
}
public static void Main()
{
SampleClass sample = new SampleClass();
// Method1を登録
Sample del1 = sample.Method1;
// del1にMethod2も登録
del1 += sample.Method2;
// 出力値:0 1
del1(0);
/* Method1とMethod2を同時に登録 エラー
* メソッドグループとメソッドグループで
* +演算子を使用することはできないみたい
Sample del2 =
sample.Method1 + sample.Method2; */
/* Method1とMethod2をそれぞれdel3,del4に
* 登録して+演算子を利用する */
Sample del3 = sample.Method1;
Sample del4 = sample.Method2;
// 呼び出されるMethodの順番を確認
Sample del5 = del4 + del3;
// 出力値:1 0
del5(0);
// del1からMethod1を解除
del1 -= sample.Method1;
// 出力値:1
del1(0);
// del5からMethod2を解除
del5 -= sample.Method2;
// 出力値:0
del5(0);
}
}
0 コメント:
コメントを投稿