エクスポート (0) 印刷
すべて展開
情報
要求されたトピックは次のとおりです。しかし、このトピックはこのライブラリには含まれていません。

PackingSize 列挙体

2013/12/12

型をマーシャリングするときのフィールドのメモリ アライメントを規定する 2 つの要素のうち、1 つを指定します。

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 の構造体およびクラスにおいて、フィールドのアライメントを規定します。パッキング サイズは、構造体またはクラスをマーシャリングするときのフィールドのオフセットを規定する 2 つの要素のうちの 1 つです。もう 1 つの要素は、フィールドの有効サイズです。フィールドのオフセットを決定するには、次の計算を行います。

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

  2. フィールドの通常パッキング サイズを計算します。フィールドが単純なデータ型の場合は、そのサイズを使用します。フィールドが配列の場合は、配列要素のサイズを使用します。フィールド自体が構造体の場合は、構造体のパッキング サイズと、構造体内の最大フィールドのサイズを比較し、いずれか小さい方のサイズを使用します。

  3. パッキング サイズと (手順 2. で計算した) フィールドの通常パッキング サイズを比較して、有効なパッキング サイズを計算します。比較の結果、いずれか小さい方の値を使用します。

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

メモメモ:

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

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

メモメモ:

パッキング サイズを変更した結果、フィールドのアライメントがサイズの倍数ではないオフセットになった場合、パフォーマンスが影響を受ける可能性があります。

Windows Phone OS

サポート: 8.0

表示:
© 2015 Microsoft