7
私の理解によると、C#文字列の最後にはヌル終了はありません。だから、Lengthは文字列の文字数を知るためにどのようになるのでしょうか?String.LengthはC#でどのように実装されていますか?
おかげで、 ギャン
私の理解によると、C#文字列の最後にはヌル終了はありません。だから、Lengthは文字列の文字数を知るためにどのようになるのでしょうか?String.LengthはC#でどのように実装されていますか?
おかげで、 ギャン
は、それは、オブジェクト内のフィールドに格納されています。偶然にも
、文字列は nullで終わる.NETの現在の実装では、内部で、それがが同じを与えることができ、NULLで終わる文字列を期待していないそのコードので、唯一の相互運用のためです一緒に働くメモリのチャンク。
とにかくフィールドの中に置くことは、パフォーマンスに関しては良い考えです.O(N)の代わりにO(1)の長さを見つけることになります。
ランダムな歴史を残しておきます:Cのコンベンションは主に便利なので、文字列へのポインタを直接渡すことができ、長さを含む構造体を心配する必要はありません(バッファの変更時に長さを同期させることも意味します)。いくつかのパスカルの実装(Delphiなど)は、やや面白いアプローチをとり、文字列の長さを*(ptr-4)の場所に保存しました。手動でバッファーを変更した場合、これを更新するのはあなたの仕事でした。 .NET文字列は不変なので、これは同期の問題をうまく処理しません(バッキングメモリを突発的に突き抜けない限り)。 –
おそらく言及する価値があります:_current実装_に保存されています.... –
@Henk:ありがとう。 –