Say*_*Sen 2 c# struct types sizeof
这是我的代码:
struct abc
{
short a;
byte b;
int c;
}
Run Code Online (Sandbox Code Playgroud)
我用的时候:
Console.WriteLine(System.Runtime.InteropServices.Marshal.SizeOf(typeof(abc)));
Run Code Online (Sandbox Code Playgroud)
它显示:8虽然它应该显示:7因为在我的机器中:byte:1,short:2,int:4bytes分别.
为什么会这样?
如果由于填充而发生,如何在读取结构大小时禁用填充?因为我需要以字节为单位的结构的确切大小.这一点很重要.
8由于结构成员对齐规则,它显示出来.
如果你想设置你struct的不对齐,你需要使用StructLayout与Pack = 1像这样的属性:
[StructLayout(LayoutKind.Sequential, Pack = 1)]
struct abc
{
short a;
byte b;
int c;
}
Run Code Online (Sandbox Code Playgroud)
这应该输出7.