読者です 読者をやめる 読者になる 読者になる

【Unity】Delegates 勉強した

C# delegate の使い方をメモします

デリゲート

class Foo
{
    delegate void MyDelegate(int num); // delegateの要求形式を記述
    MyDelegate myDelegate;
    public Foo()
    {
        myDelegate = PrintNum;
        myDelegate(10);
        myDelegate = PrintDoubleNum;
        myDelegate(10);
    }
    void PrintNum(int num)
    {
        Console.WriteLine(num);
    }
    void PrintDoubleNum(int num)
    {
        Console.WriteLine(num*2);
    }
}
// new Foo() 実行結果
10
20

マルチキャストデリゲート

class Foo
{
    delegate void MyDelegate(int num);
    MyDelegate myDelegate;
    public Foo()
    {
        myDelegate += PrintNum;
        myDelegate += PrintDoubleNum;
        myDelegate(10);
    }
    void PrintNum(int num)
    {
        Console.WriteLine(num);
    }
    void PrintDoubleNum(int num)
    {
        Console.WriteLine(num*2);
    }
}
// new Foo() 実行結果
10
20

myDelegate = PrintNum; の代わりに myDelegate += PrintDoubleNum;記述すると
複数のメソッドを同時に実行可能です