封送c#中带有指针参数的方法指针

本文关键字:指针 参数 方法 封送 | 更新日期: 2023-09-27 17:54:50

我需要封送一个带有指针参数的方法指针,就像在C中那样:

void (*callback)(int *x);

我该如何将其写为c#中的结构字段?

注意:我不介意让CLR为我解引用指针

封送c#中带有指针参数的方法指针

如果你的方法期望一个接受指向任何结构的指针的回调,你可以在像这样指定你的p/Invoke DllImports时传递一个托管回调:

private delegate void MyCallback(IntPtr par);
[DllImport("MyLibrary.dll")]
public static extern void SomeFunction(MyCallback callback);

然后你可以将IntPtr封送到实际回调方法中的适当结构中。

[编辑]

要通过引用传递int参数,下面的委托签名应该是最好的:

private delegate void MyCallback(ref int par);