什么传递不需要的ref变量?

时间:2011-05-17 20:19:36

标签: c# ref

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

4 个答案:

答案 0 :(得分:4)

  

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

是的,这就是我的工作。

答案 1 :(得分:1)

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

object NotNeeded = null;

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

答案 2 :(得分:1)

您有几个选择:

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

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

答案 3 :(得分:0)

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

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

快乐的编码。