2011-06-28 4 views

答えて

15

は、それは、オブジェクト内のフィールドに格納されています。偶然にも

、文字列 nullで終わる.NETの現在の実装では、内部で、それがが同じを与えることができ、NULLで終わる文字列を期待していないそのコードので、唯一の相互運用のためです一緒に働くメモリのチャンク。

とにかくフィールドの中に置くことは、パフォーマンスに関しては良い考えです.O(N)の代わりにO(1)の長さを見つけることになります。

+1

ランダムな歴史を残しておきます:Cのコンベンションは主に便利なので、文字列へのポインタを直接渡すことができ、長さを含む構造体を心配する必要はありません(バッファの変更時に長さを同期させることも意味します)。いくつかのパスカルの実装(Delphiなど)は、やや面白いアプローチをとり、文字列の長さを*(ptr-4)の場所に保存しました。手動でバッファーを変更した場合、これを更新するのはあなたの仕事でした。 .NET文字列は不変なので、これは同期の問題をうまく処理しません(バッキングメモリを突発的に突き抜けない限り)。 –

+1

おそらく言及する価値があります:_current実装_に保存されています.... –

+0

@Henk:ありがとう。 –

関連する問題