wsptr
2018-07-06 16:53
采纳率: 100%
浏览 1.8k

请教 C# 中有关 Marshal 的问题

简要的地说一下问题:

[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吗?
请问是为什么,应该怎样解决?

谢谢!

1条回答 默认 最新

相关推荐 更多相似问题