C#におけるデリゲートの作成方法と使用法


  1. デリゲートの定義: デリゲートを作成するには、まずデリゲートの型を定義する必要があります。デリゲートの型は、引数の型と戻り値の型に基づいて定義されます。例えば、引数がint型で戻り値がvoid型のメソッドを参照するデリゲートを作成する場合、以下のように定義します。
delegate void MyDelegate(int arg);
  1. デリゲートのインスタンス化: デリゲートを使用するには、デリゲートのインスタンスを作成します。インスタンスを作成する際には、デリゲートが参照するメソッドを指定します。以下は、デリゲートのインスタンス化の例です。
MyDelegate myDelegate = new MyDelegate(MyMethod);
  1. デリゲートの使用: デリゲートを使用する方法はいくつかあります。

3.1 メソッドの呼び出し: デリゲートを使用してメソッドを呼び出すには、デリゲートのインスタンスに引数を渡してInvokeメソッドを呼び出します。以下は、デリゲートを使用してメソッドを呼び出す例です。

myDelegate.Invoke(10);

3.2 イベントハンドリング: デリゲートは、イベントハンドリングに使用することもできます。イベントが発生したときに呼び出されるメソッドをデリゲートとして登録し、イベントが発生した際にメソッドが実行されるようにします。以下は、イベントハンドリングの例です。

public event MyDelegate MyEvent;
// イベントの発生時に登録されたメソッドが実行される
MyEvent?.Invoke(20);

3.3 コールバック関数: デリゲートは、他のメソッドにコールバック関数として渡すこともできます。メソッドの処理中に別のメソッドを呼び出し、そのメソッドが処理を完了した後に元のメソッドに戻るときに使用します。以下は、コールバック関数の例です。

public void ProcessData(MyDelegate callback)
{
    // データの処理
    callback?.Invoke(30);
}
// コールバック関数を指定してメソッドを呼び出す
ProcessData(myDelegate);

以上が、C#でデリゲートを作成する方法と使用する方法の基本的な説明です。これらの手法を使って、イベントハンドリングやコールバック関数の実装に役立てることができます。