PackingSize 枚举

指定在封送类型时用于确定字段的内存对齐方式的两个因数中的一个。

**命名空间:**System.Reflection.Emit
**程序集:**mscorlib(在 mscorlib.dll 中)

语法

声明
<SerializableAttribute> _
<ComVisibleAttribute(True)> _
Public Enumeration PackingSize
用法
Dim instance As PackingSize
[SerializableAttribute] 
[ComVisibleAttribute(true)] 
public enum PackingSize
[SerializableAttribute] 
[ComVisibleAttribute(true)] 
public enum class PackingSize
/** @attribute SerializableAttribute() */ 
/** @attribute ComVisibleAttribute(true) */ 
public enum PackingSize
SerializableAttribute 
ComVisibleAttribute(true) 
public enum PackingSize

成员

  成员名称 说明
Size1 封装大小为 1 个字节。 
Size128 封装大小为 128 个字节。 
Size16 封装大小为 16 个字节。 
Size2 封装大小为 2 个字节。 
Size32 封装大小为 32 个字节。 
Size4 封装大小为 4 个字节。 
Size64 封装大小为 64 个字节。 
Size8 封装大小为 8 个字节。 
Unspecified 未指定封装大小。 

备注

封装大小将影响组织方式为 LayoutKind.Sequential 的结构和类中的字段的对齐方式。封装大小是封送结构或类时确定字段偏移量的两个因子之一,另一个因子是字段的有效大小。若要确定一个字段的偏移量,可以:

  1. 将前一个字段的偏移量加上前一个字段的大小,计算得到偏移量的最小值。

  2. 计算字段的自然封装大小:如果该字段是简单数据类型,则使用该大小。如果该字段是数组,则使用数组元素的大小。如果该字段自身是一个结构,则比较该结构的封装大小与结构中最大字段的大小,并使用两者中较小的值。

  3. 将该字段的封装大小与其自然封装大小(在步骤 2 中计算)进行比较以计算有效封装大小。使用两者中较小的值。

  4. 计算偏移量。偏移量是等于或大于最小值的第一个内存位置,并且是步骤 3 中计算的有效封装大小的倍数。

提示

为类或结构中的所有字段计算偏移量后再加上填充值,使总体大小是封装大小的倍数。

例如,在包含一个 byte 和一个 long 的类中,如果封装大小为 Size1,则 byte 字段的偏移量为零 (0),long 字段的偏移量为一 (1)。如果封装大小为 Size4,则 long 字段的偏移量为四 (4)。在包含两个 short 字段的类中,无论封装大小是多少,第二个 short 字段的偏移量都为二 (2)。

提示

如果更改了封装大小,使字段的对齐偏移量不是其大小的倍数,则会对性能造成影响。

平台

Windows 98、Windows 2000 SP4、Windows Millennium Edition、Windows Server 2003、Windows XP Media Center Edition、Windows XP Professional x64 Edition、Windows XP SP2、Windows XP Starter Edition

.NET Framework 并不是对每个平台的所有版本都提供支持。有关受支持版本的列表,请参见系统要求

版本信息

.NET Framework

受以下版本支持:2.0、1.1、1.0

请参见

参考

System.Reflection.Emit 命名空间