私はこの他のSOの質問に答えを投稿するつもりでしたが、とにかく、誰かがStringBuilderクラスで私の前に出て行きました...
StringBuilder Class
.NETの文字列は不変であることを理解しています。したがって、文字列を作成して変更すると、内部バッファを維持し、呼び出し時にのみ最終文字列を作成するのとは対照的に、実際にはメモリ内に2つの異なる文字列が作成されToString()
ます。また、.NETが各文字列をインターンすることも知っているので、アプリケーションで使用される文字列ごとにコピーのみが作成されます。
文字列を別の文字列に追加すると、両方ともアプリケーションで使用されているため、両方がインターンされます(そうではありませんか?)。連結演算子を使用して文字列を追加しない主な理由は、最終的に完了すると、メモリ内の文字列の束全体が、それぞれ以前よりも大きくなります。
01234
と連結する56789
と、メモリに次の2つの文字列が作成されることを理解しています。
01234
0123456789
StringBuilder
インターンのために、意志のみを使用している間:
01234
56789
明らかに2番目のアプローチはパフォーマンスに優れていますが、実際にはどれくらい優れていますか?StringBuilder
つまり、小さな値のリストからより大きな文字列を作成している場合、なぜ(それ自体がメモリスペースを必要とする)を考慮する必要があるのでしょうか。いつも使うのはいいですか?または、いつ使用するか[使用しない]かについての経験則はありますか?