Передача массива по ссылке в C # и управляемом C ++ - PullRequest
1 голос
/ 31 августа 2010

вот ситуация: я хочу вызвать метод из модуля C ++ и передать ему массив:

x.Method(array, ...)

x является объектом C #. Я хотел бы предположить, что я мог бы изменить массив и заполнить его своими собственными данными - но это не так (?)

Как передать массив по ссылке и изменить его содержимое в методе?

Заранее спасибо,

веселит.

Ответы [ 2 ]

1 голос
/ 31 августа 2010

Да, если вы хотите изменить массив, не просто изменяя его элементы (т.е. добавляя или удаляя элементы), вы должны передать его по ссылке. Декларация C # будет:

 public void Method(ref Mumble[] arg)

Что не очень хороший синтаксис. Сборщик мусора позволяет легко возвращать массив в качестве возвращаемого значения функции:

 public Mumble[] Method(Mumble[] input)

Но вместо этого рассмотрим List<Mumble>.

1 голос
/ 31 августа 2010

Вам не нужно передавать массив по ссылке.Массив является ссылочным типом, поэтому, если вы передаете массив методу, вы фактически передаете ссылку на него.Метод может изменить содержимое массива, на который указывает ссылка, но не может изменить саму ссылку (т. Е. Он не может заставить его указывать на другой массив).Если бы вы передавали массив по ссылке, метод мог бы изменить ссылку на массив, но это, вероятно, не то, что вы ищете, если хотите просто заполнить существующий массив.

Я предлагаюВы смотрите эту статью для более подробной информации

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...