【发布时间】:2012-02-24 04:29:56
【问题描述】:
我在 delphi 中有这样的嵌入记录:
TKernel = packed record
State: Integer;
end;
TKernels = array[0..19] of TKernel;
TShell = packed record
Kernels: TKernels;
end;
在此,
SizeOf(TShell) = 20 * SizeOf(TKernel).
但是如果我使用 C#:
struct Shell
{
Kernel[] Kernels;
public Shell(int i = 20)
{
Kernels = new Kernel[20];
}
}
然后: Marshal.SizeOf(Shell) == 4
这意味着内核只是一个指针。 我想与Delphi进行InterOp C#,所以我需要内存结构是一样的,那么除了写20个像Kernel KernelOne这样的东西外,我应该如何在C#中声明结构; Kernel KernelTwo。。。
【问题讨论】:
标签: c# delphi struct pinvoke record