クラス、構造体、および共用体のマーシャリング
.NET Framework におけるクラスと構造体は類似しています。 どちらにも、フィールド、プロパティ、およびイベントを関連付けることができます。 また、値型は静的メソッドと非静的メソッドを持つこともできます。 主な違いは、構造体が値型でありクラスが参照型であるということです。
クラス、構造体、および共用体に関するマーシャリング オプションを次の表に列挙し、それぞれの使用方法を説明し、対応するプラットフォーム呼び出しのサンプルへのリンクを示します。
型 |
説明 |
サンプル |
---|---|---|
クラスを値渡し。 |
マネージの場合と同様に、整数メンバーを含むクラスを In/Out パラメーターとして渡します。 |
|
構造体を値渡し。 |
構造体を In パラメーターとして渡します。 |
|
構造体を参照渡し。 |
構造体を In/Out パラメーターとして渡します。 |
|
入れ子になった構造体を含む構造体 (平坦化)。 |
入れ子にした構造体を含む構造体を表すクラスをアンマネージ関数の中で渡します。 構造体はマネージ プロトタイプで 1 つの大きな構造体へと平坦化されます。 |
|
入れ子になった構造体を含む構造体 (非平坦化)。 |
埋め込み構造体を含む構造体を渡します。 |
|
別の構造体へのポインターを含む構造体。 |
第 2 の構造体へのポインターをメンバーとして含む構造体を渡します。 |
|
整数を含む構造体の配列を値渡し。 |
整数だけを含む構造体の配列を In/Out パラメーターとして渡します。 配列のメンバーを変更できます。 |
|
整数と文字列を含む構造体の配列を参照渡し。 |
整数と文字列を含む構造体の配列を Out パラメーターとして渡します。 呼び出された関数によって配列用のメモリを割り当てます。 |
|
値型を含む共用体。 |
値型 (整数と倍精度浮動小数点数) を含む共用体を渡します。 |
|
混合型を含む共用体。 |
混合型 (整数と文字列) を含む共用体を渡します。 |
|
構造体に含まれる null 値。 |
値型への参照の代わりに null 参照 (Visual Basic では Nothing) を渡します。 |