PackingSize 列挙型

定義

型をマーシャ リングする際の、フィールドのメモリ アラインメントを決定する 2 つの要素のいずれかを指定します。

この列挙体は、メンバー値のビットごとの組み合わせをサポートしています。

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
属性

フィールド

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 つの要因の 1 つです。もう 1 つの要素は、フィールドの有効なサイズです。 フィールドのオフセットを決定するには:

  1. 前のフィールドのサイズを前のフィールドのオフセットに追加して、オフセットの最小値を計算します。

  2. フィールドの自然なパッキング サイズを計算する: フィールドが単純なデータ型の場合は、サイズを使用します。 フィールドが配列の場合は、配列要素のサイズを使用します。 フィールド自体が構造体である場合は、その構造体のパッキング サイズをその構造体の最大フィールドのサイズと比較し、2 つの値のうち小さい方を使用します。

  3. 手順 2 で計算したフィールドの自然な梱包サイズと梱包サイズを比較して、有効な梱包サイズを計算します。 2 つの数値のうち小さい方を使用します。

  4. オフセットを計算します。 オフセットは、最小以上の最初のメモリ位置であり、手順 3 で計算された有効なパッキング サイズの倍数です。

Note

クラスまたは構造体内のすべてのフィールドに対してオフセットが計算されると、全体のサイズがパッキング サイズの倍数になるようにパディングが追加されます。

たとえば、 と longを含むbyteクラスでは、パッキング サイズSize1を使用して、フィールドのbyteオフセットは 0 (0) で、フィールドのlongオフセットは 1 です。 パッキング サイズが の場合、Size4longフィールドにはオフセット 4 (4) があります。 任意のパッキング サイズを使用する 2 つの short フィールドを含むクラスでは、2 番目 short のフィールドのオフセットは 2 です (2)。

Note

パッキング サイズを変更すると、サイズの倍数ではないオフセットにフィールドが配置される場合、パフォーマンスに影響を与える可能性があります。

適用対象