2

我正在使用基于 GIS 的数学库,该库在 C# 中包装了较低的 C/C++ 代码。为了接收多个输出,许多参数都是通过引用传递的。如果我只想要一些输出,我怎么能忽略其他参数?是创建虚拟变量并通过引用传递它并忽略其输出的最佳解决方案吗?

4

4 回答 4

4

是创建虚拟变量并通过引用传递它并忽略其输出的最佳解决方案吗?

是的,这就是我所做的。

于 2011-05-17T20:21:11.167 回答
1

我通常只是在我的代码中创建一个对象,比如

object NotNeeded = null;

或类似的东西,说它实际上是一个不必要的参数,然后重复使用它。不过,我不确定这是否可行,因为我不确定 GIS 库在另一边做什么。如果它需要一个实际的非空值,那可能是有问题的。

于 2011-05-17T20:23:29.460 回答
1

你有几个选择:

  • 假人
  • 包装方法
  • 更改互操作导入。您的ref参数很可能是 C++ 中的指针,如果它们允许,null那么您可以将导入更改为使用指针 (IntPtr) 并传递null/ IntPtr.Zero

但是一些假人可能是最好的(最容易阅读的)选择,除非你有很多很多电话。

于 2011-05-17T20:28:11.313 回答
0

“最好的”是我知道的“唯一”编译时方法:foo(bar, ref dummy)- 但如果有意义,请随意包装这些虚拟变量。

如果有实例方法,创建适当的扩展方法包装器可以帮助以相对无缝的方式隐藏“无用”的虚拟变量。

快乐编码。

于 2011-05-17T20:22:22.790 回答