我是C#中的新成员。
我想了解为什么结构大小增长。
即:测试结构的
结构C的大小#
struct Test
{
float x;
int y;
char z;
}
大小实际上是10个字节(浮= 4,INT = 4,炭= 2)。
但是当我试图用Marshal.SizeOf(..)
方法我得到了12
在C得到的sizeof结构++我没有pragma pack(1)
,以防止这一点,但我怎样才能做到这一点在C#中?
另一个问题是:
当我试图测试结构转换为字节数组,如果该结构是不[Serialize]
我得到作为例外字节数组大小12字节(或不),但如果结构是[Serialize]
我得到字节数组大小为170字节,为什么它的发生?
谢谢! :)
*当我试图测试结构转换为字节数组*您是如何试图做到这一点? – xanatos
如果结构不是[序列化]我转换是用这种方法http://stackoverflow.com/questions/3278827/how-to-convert-a-structure-to-a-byte-array-in-c(检查答案),如果soi转换它与http://stackoverflow.com/questions/628843/byte-for-byte-serialization-of-a-struct-in-c-sharp(最后一个答案) – Evyatar
请记住如果你使用Marshaller或序列化 - 你不测量结构的大小。您正在测量非托管等效项或序列化表单的大小。这两者都不一定与结构本身的大小有关。 –