この質問は、 StructureToPtrを使用したC#構造のマーシャリングからC++へのフォローアップです。私は次の構造体を持っています:
[StructLayout(LayoutKind.Explicit, Size = 120, CharSet = CharSet.Unicode)]
public unsafe struct DynamicState
{
[FieldOffset(0)]
public fixed double Position[3];
[FieldOffset(24)]
public fixed double Velocity[3];
[FieldOffset(48)]
public fixed double Acceleration[3];
[FieldOffset(72)]
public fixed double Attitude[3];
[FieldOffset(96)]
public fixed double AngularVelocity[3];
}
次のような配列を初期化しようとすると、次のようになります。
var dynamicState = new DynamicState();
double[] array = new double[] { 1, 2, 3 };
fixed (double* pArray = array)
{
dynamicState.Acceleration = pArray;
}
次のエラーが発生します:The left-hand side of an assignment must be a variable, property or indexer
。
構造体の一部である安全でない配列を初期化する正しい方法は何ですか?