私の C# アプリケーションでは、コールバック/デリゲートで C++ 構造体へのポインターを受け取ります。トリックを実行できるかどうかはわかりませんclass
が、c++ ポインターを適切な c# 構造体にキャストするだけで問題なく動作するため、データの格納に c# 構造体を使用しています。
今、さらに処理するために構造体への参照を渡したい
class
おそらくC++構造体に完全に「マップ」されないため、使用できません。- レイテンシーを改善するために構造体をコピーしたくない
どうやってやるの?
この例は、構造体が参照ではなく値によって渡されることを示しています。
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