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