PackingSize 枚举

定义

指定在封送类型时确定字段的内存对齐的两个因素之一。

此枚举支持其成员值的按位组合。

public enum class PackingSize
public enum PackingSize
[System.Flags]
[System.Serializable]
public enum PackingSize
[System.Serializable]
[System.Runtime.InteropServices.ComVisible(true)]
public enum PackingSize
type PackingSize = 
[<System.Flags>]
[<System.Serializable>]
type PackingSize = 
[<System.Serializable>]
[<System.Runtime.InteropServices.ComVisible(true)>]
type PackingSize = 
Public Enum PackingSize
继承
PackingSize
属性

字段

名称 说明
Unspecified 0

未指定包装大小。

Size1 1

包装大小为 1 字节。

Size2 2

包装大小为 2 个字节。

Size4 4

包装大小为 4 字节。

Size8 8

包装大小为 8 字节。

Size16 16

包装大小为 16 字节。

Size32 32

包装大小为 32 字节。

Size64 64

包装大小为 64 字节。

Size128 128

包装大小为 128 字节。

注解

包装大小会影响组织所在结构和类中字段的 LayoutKind.Sequential对齐方式。 包装大小是确定结构或类封送时字段偏移的两个因素之一;另一个因素是字段的有效大小。 确定字段的偏移量:

  1. 通过将上述字段的大小添加到上一字段的偏移量来计算偏移量的最小值。

  2. 计算字段的自然打包大小:如果字段是简单的数据类型,请使用大小。 如果字段是数组,请使用数组元素的大小。 如果字段本身是一个结构,请将该结构的打包大小与该结构中最大字段的大小进行比较,并使用两个值中的较小大小。

  3. 通过将包装大小与字段的自然包装大小进行比较(在步骤 2 中计算)来计算有效包装大小。 使用两个数字中的较小值。

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

注释

为类或结构中的所有字段计算偏移量后,将添加填充,以便整体大小是包装大小的倍数。

例如,在包含 a byte 和 a long的类中,使用包装大小 Size1时,字段的 byte 偏移量为零(0),字段的偏移量 long 为 1(1)。 如果包装大小为 Size4,则 long 字段的偏移量为 4(4)。 在包含两 short 个字段的类中,使用任何包装大小时,第二 short 个字段的偏移量为 2 (2)。

注释

如果更改打包大小会导致字段在大小不是倍数的偏移量上对齐,则更改包装大小可能会影响性能。

适用于