C#のデリゲートの使用例とコード解説


  1. デリゲートの宣言と使用

まず、デリゲートを宣言する必要があります。以下のように、デリゲートのシグネチャを定義します。

delegate void MyDelegate(string message);

この例では、引数としてstring型のメッセージを受け取り、戻り値はありません。

次に、デリゲートを使用してメソッドを呼び出す例を示します。

class Program
{
    static void Main(string[] args)
    {
        MyDelegate del = DisplayMessage;
        del("Hello, World!");
    }
    static void DisplayMessage(string message)
    {
        Console.WriteLine(message);
    }
}

上記のコードでは、Mainメソッド内でMyDelegate型の変数delを宣言し、DisplayMessageメソッドを割り当てています。その後、del変数を使ってメソッドを呼び出しています。

  1. デリゲートの複数のメソッドの呼び出し

デリゲートは、複数のメソッドを同時に呼び出すこともできます。以下の例をご覧ください。

class Program
{
    delegate void MyDelegate();
    static void Main(string[] args)
    {
        MyDelegate del = null;
        del += Method1;
        del += Method2;
        del += Method3;
        del();
    }
    static void Method1()
    {
        Console.WriteLine("Method 1");
    }
    static void Method2()
    {
        Console.WriteLine("Method 2");
    }
    static void Method3()
    {
        Console.WriteLine("Method 3");
    }
}

上記のコードでは、MyDelegate型のデリゲートdelを使用して複数のメソッドを呼び出しています。+=演算子を使用することで、メソッドをデリゲートに追加することができます。del()を呼び出すことで、登録されたすべてのメソッドが実行されます。

  1. ラムダ式を使用したデリゲートの作成

C#では、ラムダ式を使用して簡潔なデリゲートを作成することもできます。以下の例をご覧ください。

class Program
{
    delegate int Calculate(int x, int y);
    static void Main(string[] args)
    {
        Calculate add = (x, y) => x + y;
        Calculate multiply = (x, y) => x * y;
        Console.WriteLine(add(3, 4));
        Console.WriteLine(multiply(3, 4));
    }
}

上記のコードでは、Calculate型のデリゲートをラムダ式を使用して作成しています。addデリゲートは2つの数値を加算し、multiplyデリゲートは2つの数値を乗算します。それぞれのデリゲートを呼び出して結果を表示しています。

以上がC#のデリゲートの使用例とコード解説です。デリゲートは、イベントハンドリングや非同期プログラミングなど、さまざまな場面で役立つことがあります。この記事を通じて、デリゲートの基本的な使い方といくつかの応用例を学ぶことができるでしょう。