导出 (0) 打印
全部展开
信息
您所需的主题如下所示。但此主题未包含在此库中。

PackingSize 枚举

2013/12/13

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

Namespace:  System.Reflection.Emit
程序集:  mscorlib(位于 mscorlib.dll 中)

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 Phone OS

受以下版本支持: 8.0

显示:
© 2014 Microsoft