デリゲート (delegate) の比較

宣言

C++
typedef void (*Func)(int, double);
C++/CLI
delegate void Func(int, double);
C#
delegate void Func(int a, double b);

利用方法

C++
typedef void (*Func)(int, double);

Func func = &Callback;
func(1, 2.0);
C++/CLI
delegate void Func(int, double);

Func^ func = gcnew Func(Callback);
func(1, 2.0);
マネージド クラスのメンバ関数を呼ぶ場合
ref class MyClass
{
public:
    void Callback(int a, double b) {}
};
MyClass^ myClass = gcnew MyClass();

Func^ func = gcnew Func(myClass, &MyClass::Callback);
func(1, 2.0);
コンパイラ エラー C3364 | MSDN
C#
delegate void Func(int a, double b);

Func func = new Func(Callback);
func(1, 2.0);

参考

参考書