カテゴリー
C

独習C#第3版P443、デリゲート(マルチキャスト)

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)コンパイル時に実行するメソッドが決まっていなくても、実行時に特定できる。

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

inserted by FC2 system