PackingSize 列挙型
定義
重要
一部の情報は、リリース前に大きく変更される可能性があるプレリリースされた製品に関するものです。 Microsoft は、ここに記載されている情報について、明示または黙示を問わず、一切保証しません。
型をマーシャ リングする際の、フィールドのメモリ アラインメントを決定する 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
- 継承
- 属性
フィールド
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、organization が である構造体およびクラス内のフィールドの配置に影響します。 パッキング サイズは、構造体またはクラスがマーシャリングされるときにフィールドのオフセットを決定する 2 つの要因の 1 つです。もう 1 つの要素は、フィールドの有効サイズです。 フィールドのオフセットを決定するには:
前のフィールドのサイズを前のフィールドのオフセットに追加して、オフセットの最小値を計算します。
フィールドの自然なパッキング サイズを計算する: フィールドが単純なデータ型の場合は、サイズを使用します。 フィールドが配列の場合は、配列要素のサイズを使用します。 フィールド自体が構造体である場合は、その構造体のパッキング サイズをその構造体の最大フィールドのサイズと比較し、2 つの値のうち小さい方を使用します。
手順 2 で計算したフィールドの自然な梱包サイズと梱包サイズを比較して、有効な梱包サイズを計算します。 2 つの数値のうち小さい方を使用します。
オフセットを計算します。 オフセットは、最小以上の最初のメモリ位置であり、手順 3 で計算された有効なパッキング サイズの倍数です。
注意
クラスまたは構造体内のすべてのフィールドに対してオフセットが計算されると、全体のサイズがパッキング サイズの倍数になるようにパディングが追加されます。
たとえば、 と long
を含むbyte
クラスでは、パッキング サイズSize1
を使用して、フィールドのbyte
オフセットは 0 (0) で、フィールドのlong
オフセットは 1 です。 パッキング サイズが の場合、Size4
long
フィールドにはオフセット 4 (4) があります。 任意のパッキング サイズを使用する 2 つの short
フィールドを含むクラスでは、2 番目 short
のフィールドのオフセットは 2 です (2)。
注意
パッキング サイズを変更すると、サイズの倍数ではないオフセットにフィールドが配置される場合、パフォーマンスに影響を与える可能性があります。
適用対象
.NET