using System;
namespace Chapter01All
{
delegate void Calcs(ref int a, ref int b);
class DeleGateSample
{
void Kasan(ref int a, ref int b)
{
a += b;
}
void Genzan(ref int a, ref int b)
{
a -= b;
}
void Kakezan(ref int a, ref int b)
{
a *= b;
}
void Warizan(ref int a, refint b)
{
a /= b;
}
static void Main()
{
Calcs = Op;
Calcs kasan = Kasan;
Calcs genzan = Genzan;
Calcs kakezan = Kakezan;
int a = 10; int b = 20;
Op = kasan;
Op += genzan;
Op(ref a, ref b); //a+b=>30, 30-b=>10
Console.WriteLine(a);
int c = 100; int d = 200;
Op = genzan;
Op += kakezan;
Op(ref c, ref d); //c-d=>-100, -100*200=>-20000
Console.WriteLine(c);
}
}
}
デリゲートを使う理由。その1)デリゲートはイベントをサポートするから。その2)コンパイル時に実行するメソッドが決まっていなくても、実行時に特定できる。