如何在C#中创建“typedef to a function pointer”?

时间:2014-08-28 20:15:20

标签: c#

我正在将代码从C ++转换为C#。我有这条线:

typedef bool (*proc)(int*, ...);

我能用C#做到吗?

2 个答案:

答案 0 :(得分:3)

简短回答:是的。

<强>一般
(未经测试......只是一个大纲)

{
    bool AFunction(ref int x, params object[] list)
    {
        /* Some Body */
    }

    public delegate bool Proc(ref int x, params object[] list);  // Declare the type of the "function pointer" (in C terms)

    public Proc my_proc;  // Actually make a reference to a function.

    my_proc = AFunction;         // Assign my_proc to reference your function.
    my_proc(ref index, a, b, c); // Actually call it.
}

答案 1 :(得分:0)

Delegates并非严格等同,但用于类似目的。

样品:

public delegate void DoSth(string message);

void foo(string msg) {
   // ...
}


void bar() {
  DoSth delg = foo;
  delg("tttttt");
}

如果您尝试使用P / Invoke从本机C ++库调用代码,则需要查看GetDelegateForFunctionPointerGetFunctionPointerForDelegate Method对函数。