简要的地说一下问题:
[StructLayout(LayoutKind.Sequential, CharSet = CharSet.Ansi, Pack = 1)]
class C1
{
public byte a = 0;
public byte b = 0;
public byte c = 0;
}
[StructLayout(LayoutKind.Sequential, CharSet = CharSet.Ansi, Pack = 1)]
class C2
{
[MarshalAs(UnmanagedType.ByValArray, ArraySubType = UnmanagedType.Struct, SizeConst = 4)]
public C1[] c1 = new C1[4].Select(s => s = new C1()).ToArray();
public C1 c2 = new C1();
}
有上面两个类(必须是类,不能是结构),如何将C2转换为字节数组呢?
现在对C2计算大小就不正确。Marshal.SizeOf(typeof(C2))的结果是19,但实际上不是应该是15吗?
请问是为什么,应该怎样解决?
谢谢!