我是C#的新手.
我试图理解为什么结构大小增长.
即:
struct Test
{
float x;
int y;
char z;
}
Run Code Online (Sandbox Code Playgroud)
Test结构的大小实际上是10个字节(float = 4,int = 4,char = 2).
但是,当我试图用Marshal.SizeOf(..)
方法获得sizeof结构时,我得到了12.
在C++中我做pragma pack(1)
了防止这个但是我怎么能在C#中做到这一点?
另一个问题:
当我试图将Test结构转换为字节数组时,如果结构不是[Serialize]
我得到的字节数组大小为12字节为例外(或不是),但如果结构是[Serialize]
我得到大小为170字节的字节数组,为什么会这样?
谢谢!:)
xan*_*tos 10
这个
[StructLayout(LayoutKind.Sequential, Pack = 1)]
struct TestStruct
{
float x;
int y;
char z;
}
Run Code Online (Sandbox Code Playgroud)
会给出一个Marshal.SizeOf() == 9
,因为Marshal.SizeOf(typeof(char)) == 1
出于奇怪的历史原因.
但
[StructLayout(LayoutKind.Sequential, Pack = 1, CharSet = CharSet.Unicode)]
Run Code Online (Sandbox Code Playgroud)
你会得到这个 Marshal.SizeOf() == 10
归档时间: |
|
查看次数: |
1774 次 |
最近记录: |