単純な文字列連結の場合は、この+
アプローチを使用します。フォーマットを必要としない単純なものの方が明確です。
特定の形式を持ち、文字列全体の構造を保持し、入力のプレースホルダーを提供することが役立つ、より複雑な文字列の場合は、を使用しますString.Format
。
そして、はい、オーバーヘッドがあります。String.Format
カバーの下にStringBuilderを使用します。これらのシナリオでは、単純な文字列の連結がはるかに高速になります。このトピックに関するいくつかのベンチマークとブログ投稿は、非常に簡単に見つけることができます。もちろん、それはすべてあなたの使用法に依存します。小さな文字列の連結がループで発生している場合、の繰り返しの使用は、単純な連結String.Format
よりも目立つ可能性があります。ループ内に大きな+
文字列を構築している場合、典型的な例は優先することであり、concatとStringBuilderの関連する質問はSOにあります。StringBuilder
編集:明確にするために、これはほとんど目的を果たしません:String.Format("{0}{1}", a, b)
多くのフォーマットがないので。それは単にa + b
です。残念ながら、本番コードでそのような例に出くわしました。String.Formatを見るとすぐに、単純な連結ではなく、特定の方法で構造化する必要があるものが表示されると思います。
OTOH、この電話番号を検討してください:"(" + area + ") " + number + " x" + extension
-あまりにも多くのことが起こっており、変更するのは簡単ではありません。この場合、String.Formatが望ましいです:String.Format("({0}) {1} x{2}", area, number, extension)
。これはまだ些細な例ですが、あなたはその考えを理解します。