这里的情况是:我想调用从一个C++模块的方法,以及传递数组它:传递数组通过在C#参考和管理C++
x.Method(array, ...)
x是C#对象。我想我可以改变数组并填充自己的数据 - 但它似乎不是这种情况(?)
我应该如何通过引用传递数组并更改其在方法中的内容?
预先感谢您,
欢呼声。
这里的情况是:我想调用从一个C++模块的方法,以及传递数组它:传递数组通过在C#参考和管理C++
x.Method(array, ...)
x是C#对象。我想我可以改变数组并填充自己的数据 - 但它似乎不是这种情况(?)
我应该如何通过引用传递数组并更改其在方法中的内容?
预先感谢您,
欢呼声。
是的,如果你想改变的磁盘阵列不仅仅是改变它的元素(即添加或删除元素),那么你必须按引用传递它。 C#声明将是:
public void Method(ref Mumble[] arg)
这不是很好的语法。垃圾收集器可以很容易地返回数组作为函数的返回值:
public Mumble[] Method(Mumble[] input)
但考虑List<Mumble>
代替。
您不需要通过引用传递数组。数组是一个引用类型,所以如果您将数组传递给该方法,则实际上是将一个引用传递给它。该方法可以改变引用指向的数组内容,但不能改变引用本身(即不能使它指向不同的数组)。如果您是通过引用传递数组,那么该方法将能够更改对该数组的引用,但如果您只想填充现有数组,则这可能不是您要查找的内容。
我建议你看看this article更多细节