Как передать структуру C# по ссылке?C++

Программы на C++. Форум разработчиков
Ответить
Anonymous
 Как передать структуру C# по ссылке?

Сообщение Anonymous »

В моем приложении C# я получаю указатель на структуру C++ в обратном вызове/делегате. Я не уверен, что класс справится с этой задачей, но простое приведение указателя C++ к соответствующей структуре C# работает нормально, поэтому я использую структуру C# для хранения данных.
Теперь я хочу передать ссылку на структуру для дальнейшей обработки.
  • Я не могу использовать class, потому что он, вероятно, не будет идеально «сопоставляться» с C++ struct.
  • Я не хочу копировать структуру для уменьшения задержки.
Как это сделать?

Этот пример демонстрирует, что структура передается по значению, а не по ссылке:
using System;

namespace TestStruct
{
struct s
{
public int a;
}

class Program
{
static void Main(string[] args)
{
s s1 = new s
{
a = 1
};
Foo(s1);
Console.WriteLine("outer a = " + s1.a);
}

private static void Foo(s s1)
{
s1.a++;
Console.WriteLine("inner a = " + s1.a);
}

}
}

Вывод:
inner a = 2
outer a = 1


Подробнее здесь: https://stackoverflow.com/questions/166 ... -reference
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C++»