在C#和托管C ++中通过引用传递数组

时间:2010-08-31 12:15:18

标签: c# arrays reference

情况如下:我想从C ++模块调用一个方法,并将数组传递给它:

x.Method(array, ...)

x是一个C#对象。我想我可以改变数组并用我自己的数据填充它 - 但似乎不是这种情况(?)

我应该如何通过引用传递数组并在方法中更改其内容?

提前谢谢你,

欢呼声。

2 个答案:

答案 0 :(得分:1)

您不需要通过引用传递数组。 Array是一种引用类型,因此如果将数组传递给方法,实际上是在传递对它的引用。该方法可以改变引用指向的数组的内容,但不能改变引用本身(即它不能使它指向不同的数组)。如果您通过引用传递数组,该方法将能够更改对数组的引用,但如果您只想填充现有数组,那可能不是您要查找的内容。

我建议您查看this article了解更多详情

答案 1 :(得分:1)

是的,如果你想改变数组而不仅仅是改变它的元素(即添加或删除元素),那么你必须通过引用传递它。 C#声明将是:

 public void Method(ref Mumble[] arg)

哪种语法不是很好。垃圾收集器可以很容易地返回一个数组作为函数返回值:

 public Mumble[] Method(Mumble[] input)

但请考虑使用List<Mumble>