2009-08-17 13 views
1

実際にNULLポインタの文字列をマーシャリングしようとするとどうなりますか?[MarshalAs(UnmanagedType.LPStr)]を使用してヌルポインタをマーシャリングするとどうなりますか

+1

私は知りません。試してみてください。 – JoshJordan

+0

ええ、私は混乱しているInterop変換の途中です。コンパイルする前に別の時間になるつもりで、別々のプロジェクトで時間をかけてテストすることなく、知りたいと思っています。 – DevDevDev

答えて

2

ネイティブから管理対象にすると、null文字列オブジェクトが返されます。マネージからネイティブへ、あなたはヌルポインタを取得します。それはかなり直感的です。 :-)

+0

それは私が望んでいたものです。あなたは空の文字列ではなく、間違いなくエラーではない空の文字列を取得しますか? – DevDevDev

+0

ええ、そうです。 –

0

あなたはどう思いますか? LPstrは、ANSI文字のヌルで終わる配列へのポインタです。 NULLは明らかにヌル終端配列へのポインタではありません。おそらく、NULLなどから読み込もうとします。 どのような場合でも、未定義の動作、それはあなたのアプリをクラッシュするか、またはそれを未知の状態のままにします。なぜそれが欲しいのですか?なぜそれをmashallingする前にチェックするだけではない?

+0

属性を確認するにはどうすればよいですか? IntPtrをマーシャリングする必要があります。 – DevDevDev

0

あなたが呼び出しているものに応じて、受け入れ可能な入力であっても受け入れられないAPIであっても、NULLを渡すと思います。そのようなもののために最もよく設計されたC(++)コードチェックがありますが、それは二重チェックには最適です。

1

NULL値をいずれかの方向に整列するとき、文字列がNULLの各言語表現に翻訳するように型付けされた(C#のためのCおよびヌルの場合はNULL)

関連する問題