В моем приложении С# я получаю указатель на С++ struct в callback/delegate. Я не уверен, что class
может сделать трюк, но просто приведение указателя С++ к соответствующей структуре С# отлично работает, поэтому я использую С# struct для хранения данных.
Теперь я хочу передать ссылку на struct для дальнейшей обработки
- Я не могу использовать
class
, потому что он, вероятно, не "отлично" сопоставит с конструкцией С++. - Я не хочу копировать структуру для лучшей задержки
Как я могу это сделать?
В этом примере показано, что 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