【C#】デリゲートはCの関数ポインタのようなもの

C#

C言語の関数ポインタは、関数のアドレスを保持し、実行時にその関数を呼び出すために使用されます。これは、特にコールバック関数や、関数の動的な選択に非常に有用です。

C#において、この概念は「デリゲート」として存在します。

C言語の関数ポインタ

2つの整数を引数に取り、それらの和を返す簡単な関数を定義。次に、この関数の型に合致する関数ポインタを定義し、関数ポインタからadd関数を呼び出す例です。

#include <stdio.h>

// 2つの整数を加算する関数
int add(int a, int b) {
    return a + b;
}

int main() {
    // 関数ポインタの定義
    int (*funcPtr)(int, int);

    // 関数ポインタにadd関数を代入
    funcPtr = add;

    // 関数ポインタを通じて関数を呼び出し
    int result = funcPtr(5, 3);

    // 結果の出力
    printf("Result: %d\n", result);

    return 0;
}

C#のデリゲート

C#でも同じようなことができます。まず、2つの整数を引数に取り、それらの和を返す簡単なメソッドを定義。次に、このメソッドの型に合ったデリゲートを定義し、デリゲートからAddメソッドを呼び出す例です。

using System;

class Program
{
    // 2つの整数を加算するメソッド
    static int Add(int a, int b)
    {
        return a + b;
    }

    // デリゲートの宣言
    public delegate int BinaryOp(int x, int y);

    static void Main()
    {
        // デリゲートのインスタンスを作成し、Addメソッドを代入
        BinaryOp op = new BinaryOp(Add);

        // デリゲートを通じてメソッドを呼び出し
        int result = op(5, 3);

        // 結果の出力
        Console.WriteLine("Result: " + result);
    }
}

タイトルとURLをコピーしました