PackingSize 列挙体
型をマーシャリングするときのフィールドのメモリ アライメントを規定する 2 つの要素のうち、1 つを指定します。
この列挙体には、メンバ値をビットごとに演算するための FlagsAttribute 属性が含まれています。
<Flags>
<Serializable>
Public Enum PackingSize
[C#]
[Flags]
[Serializable]
public enum PackingSize
[C++]
[Flags]
[Serializable]
__value public enum PackingSize
[JScript]
public
Flags
Serializable
enum PackingSize
解説
パッキング サイズは、構成が LayoutKind.Sequential の構造体およびクラスにおいて、フィールドのアライメントを規定します。パッキング サイズは、構造体またはクラスをマーシャリングするときのフィールドのオフセットを規定する 2 つの要素のうちの 1 つです。もう 1 つの要素は、フィールドの有効サイズです。フィールドのオフセットを決定するには、次の計算を行います。
- 前のフィールドのサイズを前のフィールドのオフセットに加えることによって、オフセットの最小値を計算します。
- フィールドの通常パッキング サイズを計算します。フィールドが単純なデータ型の場合は、そのサイズを使用します。フィールドが配列の場合は、配列要素のサイズを使用します。フィールド自体が構造体の場合は、構造体のパッキング サイズと、構造体内の最大フィールドのサイズを比較し、いずれか小さい方のサイズを使用します。
- パッキング サイズと (手順 2 で計算した) フィールドの通常パッキング サイズを比較して、有効なパッキング サイズを計算します。比較の結果、いずれか小さい方の値を使用します。
- オフセットを計算します。オフセットは、最小値以上で、手順 3 で計算した有効パッキング サイズの倍数となる最初のメモリ位置となります。
メモ クラスまたは構造体内のすべてのフィールドについてオフセットを計算したら、全体のサイズがパッキング サイズの倍数となるように、パディングが追加されます。
たとえば、 byte と long を含んでいるクラスで、パッキング サイズ Size1 を使用している場合、 byte フィールドのオフセットは 0 となり、 long フィールドのオフセットは 1 となります。パッキング サイズが Size4 の場合、 long フィールドのオフセットは 4 となります。2 つの short フィールドを含むクラスで、パッキング サイズが任意の場合、2 番目の short フィールドのオフセットは 2 となります。
メモ パッキング サイズを変更した結果、フィールドのアライメントがサイズの倍数ではないオフセットになった場合、パフォーマンスが影響を受ける可能性があります。
メンバ
メンバ名 | 説明 | 値 |
---|---|---|
Size1 | パッキング サイズは 1 バイトです。 | 1 |
Size16 | パッキング サイズは 16 バイトです。 | 16 |
Size2 | パッキング サイズは 2 バイトです。 | 2 |
Size4 | パッキング サイズは 4 バイトです。 | 4 |
Size8 | パッキング サイズは 8 バイトです。 | 8 |
Unspecified | パッキング サイズは指定されていません。 | 0 |
必要条件
名前空間: System.Reflection.Emit
プラットフォーム: Windows 98, Windows NT 4.0, Windows Millennium Edition, Windows 2000, Windows XP Home Edition, Windows XP Professional, Windows Server 2003 ファミリ
アセンブリ: Mscorlib (Mscorlib.dll 内)