StructLayoutAttribute ::Pack 字段 |
控制类或结构的数据字段在内存中的对齐方式。
程序集: mscorlib(在 mscorlib.dll 中)
public: int Pack
此字段指示在指定 LayoutKind ::Sequential 值时应使用的内存边界。
Pack 的值必须介于 0、1、2、4、8、16、32、64 或 128:
-
值为 0 则指示封装对齐方式设置为当前平台的默认值。
-
1 值表示字节边界上发生的数据对齐。封装值为 1 的字段之间无间隙。
-
封装值 2 和更高的值将导致字节上要对齐的每个字段相对于结构的开头进行偏置。因此,数据字段将在偏移量上开始,偏移量是请求的封装值的倍数。
下面的示例包含一个带有三个单字节字段的结构:
不管封装值如何,字节 B0 始终从偏移量为 0(0 字节)处开始。
封装值 0 将产生以下结果:
-
B0 将在偏移量为 0(字节 0)处开始。
-
B1 将在偏移量为 1(字节 1)处开始。
-
B2 将在偏移量为 2(字节 2)处开始。
请注意默认平台的对齐方式将总是连续打包相同类型。
封装值 1 将产生以下结果:
-
B0 仍将在偏移量为 0(字节 0)处开始。
-
B1 仍将在偏移量为 1(字节 1)处开始。
-
B2 仍将在偏移量为 2(字节 2)处开始。
但是,封装值 2 将产生以下结果:
-
B0 仍将在偏移量为 0(字节 0)处开始。
-
B1 将在偏移量为 2(字节 2)处开始。
-
B2 将在偏移量为 4(字节 4)处开始。
同样,n 的一个封装值将产生以下结果:
-
B0 仍将在偏移量为 0(字节 0)处开始。
-
B1 将在偏移量为 n(字节 n)处开始。
-
B2 将在偏移量为 n*2(字节 2n)处开始。
在磁盘和网络写操作过程中导出结构时,经常使用 Pack 字段。 在平台调用和互操作的操作过程中也经常使用该字段。
偶尔,字段用于通过产生更紧密的封装大小来降低内存要求。但是,此使用情况需要仔细考虑实际的硬件约束,实际上可能降低性能。
Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98
.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表,请参见 .NET Framework 系统要求。