- コンパイラは
concat可能な限り多くの文字列を最適化するため、たとえば、改行のために分割されたばかりの文字列は、通常、単一の文字列リテラルに最適化できます。
- 変数との連結はにコンパイルされます
String.Concat
StringBuilder文字列に複数の(10以上程度の)「変更」を行うと、はるかに高速になる可能性がありますが、バッファに必要なスペースよりも多くのスペースを割り当て、内部バッファのサイズを変更するため、余分なオーバーヘッドが発生します。する必要がある。
私は個人的にString.Formatほとんどの場合、次の2つの理由で使用しています。
- 一連の変数を再配置するよりも、フォーマット文字列を維持する方がはるかに簡単です。
String.FormatIFormatProvider文字列に埋め込まれているすべての型(数値など)に渡されるaを取得して、指定されたカルチャIFormattableに適切な数値形式を取得し、全体的に値の形式をより細かく制御できるようにします。
たとえば、一部のカルチャでは小数点としてコンマを使用するため、どちらかで確認するか、数値が意図したとおりにフォーマットされていることを確認するかどうかStringBuilderをString.Format指定します。CultureInfo.InvariantCulture
注意すべきもう2つのこと...
StringBuilderまた、不要なセカンドバッファを必要とせずAppendFormatに柔軟に対応できる機能を備えています。String.Format
- を使用するとき
StringBuilderは、に渡すパラメーターを連結して目的を果たさないようにしてくださいAppend。見逃しやすいものです。