私のC#アプリケーションでは、コールバック/デリゲートのC++構造体へのポインタを受け取ります。私はclass
がトリックを行うことができるかどうかは分かりませんが、適切なC#の構造体がうまく動作するので、データを格納するためにC#構造体を使用しています。C#structを参照渡ししますか?
は今、私はそれはおそらく完全にC++の構造体に「マップ」はありませんので、私はclass
を使用することはできませんさらに処理するために
- を構造体への参照を渡したいです。
- 私はより良いレイテンシのために構造体をコピーしたくない
私はそれをどのように行うことができますか?
この例では、構造体が値ではなく、参照渡しされていることを示しています
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
C++のstruct: 'struct'については、classと全く同じです(デフォルトのアクセシビリティはありません)。C#では完全に異なる値と参照型です。おそらくC#でクラスを使う方が良いでしょう。少なくともC#で 'struct'がどのように動作するかを理解していなければなりません。 –
私の相互運用クラスの多くは実際にクラスであり、構造体ではありません。マーシャリングを正しく設定して(そして多くの場合、デフォルトマーシャリングの作業をして)、クラスを使用することができます。疑いがある場合は、最初にクラスで試してみます。 –