One Minute Notes: C#のデリゲートについて

私のブログに新しいセクションを始めます — One Minute Notesです。ITの重要なトピックに関する短いノートで、たった1分で読んで基本的な概念を理解できます。One Minute Notesのこのエピソードでは、C#のデリゲートが何なのか、なぜ必要なのかについて話しましょう。

デリゲートは、後で呼び出すことができる関数用のプレースホルダーと考えることができます。整数値を格納する変数を宣言するように、関数を値として格納する変数を宣言することができ、これによって実行時に呼び出す関数を変更することができます。

以下にデリゲートの定義と使い方の例を示します。もちろんこれは最も単純な実装です。実際の例では条件に基づいてデリゲートする関数を選択するためにif文やswitchが含まれるかもしれません。

public delegate int BinaryOperation(int a, int b);

class SampleClass
{
  public static int Add(int a, int b)
  {
     return a + b;
  }

  static int Subtract(int a, int b) => a - b;

  static void Main(string[] args)
  {
    BinaryOperation operation = Subtract;
    int x = operation(10, 2); // 8

    operation = Add;
    int x = operation(10, 2); // 12
  }
}

全画面表示モードに入る / 全画面表示モードを終了する

面白い事実: .NETの基本クラスライブラリにも、最もポピュラーなユースケースをカバーする事前定義されたデリゲートがあり、自分自身でデリゲートを実装する必要は通常ありません。Actionデリゲートはパラメーターを取ることができるvoid関数を表します。例えば、Action<string> printText = x => Console.WriteLine(x);です。Funcデリゲートもあり、値を返す関数を定義します。全体的には同じシグネチャですが、最後のパラメーターが戻り値の型を定義します。上記の例で、Add関数はFunc<int, int, int>デリゲートにも割り当てることができます。


このOne Minute Noteは役に立ちましたか?いいねをクリックしてフォローして、今後も読んでみてください🙂

こちらの記事はdev.toの良い記事を日本人向けに翻訳しています。
https://dev.to/yellalena/one-minute-notes-delegates-in-c-c46