文字列のマーシャリング
プラットフォーム呼び出しでは、文字列パラメーターがコピーされ、必要に応じて .NET Framework 形式 (Unicode) からアンマネージ形式 (ANSI) に変換されます。 マネージ文字列は変更不可なので、プラットフォーム呼び出しでは関数から制御が返されるときに、アンマネージ メモリからマネージ メモリへとマネージ文字列はコピーされません。
文字列に関するマーシャリングのオプションを次の表に列挙し、その使用方法を説明し、関連 .NET Framework サンプルへのリンクを示します。
文字列 |
説明 |
サンプル |
---|---|---|
値渡し。 |
文字列を In パラメーターとして渡します。 |
|
結果として渡す。 |
アンマネージ コードから文字列を返します。 |
|
参照渡し。 |
StringBuilder を使用して、文字列を In/Out パラメーターとして渡します。 |
|
構造体に組み込んで値渡し。 |
文字列を In パラメーターである構造体に組み込んで渡します。 |
|
構造体に組み込んで参照渡し (char*)。 |
文字列を In/Out パラメーターである構造体に組み込んで渡します。 アンマネージ関数は文字バッファーへのポインターを要求します。またバッファーのサイズは構造体のメンバーです。 |
|
構造体に組み込んで参照渡し (char[])。 |
文字列を In/Out パラメーターである構造体に組み込んで渡します。 アンマネージ関数は埋め込み文字バッファーを要求します。 |
|
クラスに組み込んで値渡し (char*)。 |
文字列をクラスに組み込んで渡します (クラスは In/Out パラメーターです)。 アンマネージ関数は、文字バッファーへのポインターを要求します。 |
|
クラスに組み込んで値渡し (char[])。 |
文字列をクラスに組み込んで渡します (クラスは In/Out パラメーターです)。 アンマネージ関数は埋め込み文字バッファーを要求します。 |
|
文字列の配列として値渡し。 |
値渡しされる文字列の配列を作成します。 |
|
文字列を含む構造体の配列として値渡し。 |
文字列を含む構造体の配列を作成し、その配列を値渡しします。 |