PackingSize 枚举
定义
重要
一些信息与预发行产品相关,相应产品在发行之前可能会进行重大修改。 对于此处提供的信息,Microsoft 不作任何明示或暗示的担保。
指定用于在封送类型时确定字段的内存对齐方式的两个因素之一。
此枚举支持其成员值的按位组合。
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
- 继承
- 属性
字段
Size1 | 1 | 封装大小为 1 个字节。 |
Size128 | 128 | 封装大小为 128 个字节。 |
Size16 | 16 | 封装大小为 16 个字节。 |
Size2 | 2 | 封装大小为 2 个字节。 |
Size32 | 32 | 封装大小为 32 个字节。 |
Size4 | 4 | 封装大小为 4 个字节。 |
Size64 | 64 | 封装大小为 64 个字节。 |
Size8 | 8 | 封装大小为 8 个字节。 |
Unspecified | 0 | 未指定封装大小。 |
注解
打包大小会影响其组织为 的结构和类中字段的 LayoutKind.Sequential对齐方式。 打包大小是确定结构或类封送时字段偏移量的两个因素之一;另一个因素是字段的有效大小。 确定字段的偏移量:
通过将上一个字段的大小添加到前一个字段的偏移量来计算偏移量的最小值。
计算字段的自然打包大小:如果字段为简单数据类型,请使用大小。 如果字段是数组,请使用数组元素的大小。 如果字段本身是结构,请将该结构的打包大小与该结构中最大字段的大小进行比较,并使用两个值中的较小值。
通过将包装大小与在步骤 2 中计算的字段的自然包装大小进行比较来计算有效包装大小。 使用两个数字中较小的一个。
计算偏移量。 偏移量是等于或大于最小值的第一个内存位置,是步骤 3 中计算的有效打包大小的倍数。
注意
计算类或结构中所有字段的偏移量后,将添加填充,使整体大小是打包大小的倍数。
例如,在包含 byte
和 long
的类中,使用包装大小 Size1
,字段的 byte
偏移量为零 (0) 字段的 long
偏移量为 1 (1) 。 如果包装大小为 Size4
,则字段的 long
偏移量为 4 (4) 。 在包含两 short
个字段的类中,使用任意打包大小,第二 short
个字段的偏移量为 2 (2) 。
注意
如果更改包装大小会导致字段在不是其大小的倍数的偏移量上对齐,则更改包装大小可能会影响性能。