我正在将C ++库移植到C#,并且遇到了一些使用double *指针作为参数的方法。处理此问题的最佳方法是什么?也许修改调用代码,使其不传递指针?我只是将代码包装在“不安全”的块中,并设置编译器的/ unsafe标志,但是我不能在方法签名中进行此操作。
也许在参数上使用ref
(或out
)可能就足够了,或者如果需要使用double[]
处理这些数组,则可以使用]。>
也许发布方法定义,以使您更清楚真正需要什么。
我假设您希望使用托管安全代码
可能转换为ref double或out double或double []。应该是哪个取决于代码的语义。 C ++ double *实际上可以表示很多东西。
您可以将函数标记为unsafe
并使用/ unsafe
传递指针的地方,您只是将默认的[[传递值]]机制更改为传递引用
double
的数组,则使该方法接受double[]
。如果指针在那里,以便被调用的代码可以修改调用者的double
变量的值,那么您有两种选择: