私はこのようなデルファイに埋め込まレコードを持っている:C#で埋め込み構造体を宣言するにはどうすればよいでしょうか?
struct Shell
{
Kernel[] Kernels;
public Shell(int i = 20)
{
Kernels = new Kernel[20];
}
}
その後: Marshal.SizeOf(シェルこれで
TKernel = packed record
State: Integer;
end;
TKernels = array[0..19] of TKernel;
TShell = packed record
Kernels: TKernels;
end;
、
SizeOf(TShell) = 20 * SizeOf(TKernel).
をしかし、私は、C#を使用している場合)== 4
つまり、カーネルは単なるポインタですter。 私はDelphiとC#を相互運用したいので、そこにはメモリ構造が同じである必要があります。したがって、どのように構造体をC#で宣言する必要がありますか?Kernel KernelOneの20個の好きなものを書きます。カーネルKernelTwo ...
Richard Schneiderのように、今日私は何か新しいことを学びましたが、私は不思議です:上記の宣言により、型のサイズは80になります(Marshal.SizeOfによって報告されます)しかし、 'Kernels'はデフォルト値がnullであり、任意の長さの' Kernel [] 'を割り当てることができます。したがって、管理型は明らかに通常の管理型です。長さが間違っていますか?)これはどこに書かれているのか分かりますか?http://msdn.microsoft.com/en-us/library/z6cfh6e6(v=vs.100).aspxに詳細はあまりありません。 – phoog
余分な項目は切り捨てられます。欠落した項目は、デフォルト値を使用してマーシャリングされます。 –