在C#中使用指针参数封送方法指针

我需要将带有指针参数的方法指针编组,就像在C中一样:

void (*callback)(int *x);

如何在C#中将其写为struct字段?

注意:我不介意CLR为我取消引用指针.

解决方法:

如果您的方法期望回调函数接受指向任何结构的指针,则可以在指定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);
上一篇:C#/ CIL:本机int的类型


下一篇:c# – “ceq”MSIL命令和object.InternalEquals之间的区别