我正在使用基于GIS的数学库,它在C#中包含较低的C / C ++代码。为了接收多个输出,许多参数通过引用传递。如果我只想要一些输出,我怎么能忽略其他参数?是创建虚拟变量并通过引用传递它并忽略其输出的最佳解决方案吗?
答案 0 :(得分:4)
是创建虚拟变量并通过引用传递它并忽略其输出的最佳解决方案吗?
是的,这就是我的工作。
答案 1 :(得分:1)
我通常只在我的代码中创建一个对象,如
object NotNeeded = null;
或类似的东西,说它实际上是一个不必要的参数,然后反复使用它。我不确定这是否会起作用,因为我不确定GIS库在另一方面做了什么。如果它需要每个值的实际非空值,那可能会有问题。
答案 2 :(得分:1)
您有几个选择:
ref
参数很可能是C ++中的指针,如果它们允许null
,那么您可以更改导入以使用指针(IntPtr)并传递null
/ IntPtr.Zero
。 但是,除非你有很多很多电话,否则一些假人可能是最好的(最容易阅读)选项。
答案 3 :(得分:0)
“最好”是我所知道的“唯一”编译时方法:foo(bar, ref dummy)
- 如果有意义,可以随意包装这些虚拟变量。
如果有实例方法,创建适当的Extension Methods包装器可以帮助以相对无缝的方式隐藏“无用的”虚拟变量。
快乐的编码。