我需要使用指针参数封送方法指针,就像在C:
中一样void (*callback)(int *x);
我如何在C#中将其写为struct field?
注意:我不介意让CLR取消引用我的指针。
答案 0 :(得分:4)
如果您的方法期望回调接受指向任何结构的指针,则可以在指定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);