文字列連結の方法はケースバイケースで使い分けますが、単純な場合にどれが早いのかと疑問に思ったので計測。
コード
var c = 10000000;
var sw = new System.Diagnostics.Stopwatch();
// StringBuilder
sw.Start();
for (int i = 0; i < c; i++)
{
StringBuilder sb = new StringBuilder();
sb.Append("%").Append(i).Append("%");
var str = sb.ToString();
}
sw.Stop();
Console.WriteLine(sw.Elapsed.ToString());
// +演算子
sw.Restart();
for (int i = 0; i < c; i++)
{
var str = "%" + i + "%";
}
sw.Stop();
Console.WriteLine(sw.Elapsed.ToString());
// string.Format
sw.Restart();
for (int i = 0; i < c; i++)
{
var str = string.Format("%{0}%", i);
}
sw.Stop();
Console.WriteLine(sw.Elapsed.ToString());
return;
出力
00:00:01.8321544
00:00:01.6269853
00:00:02.1980389
速度は +演算子 > StringBuilder > string.Format() でした。
単純な処理の場合はつべこべ言わずに+で繋げておけという感じでしょうか。
差がごくわずかなのでstring.Format()で可読性を取るのもアリでしょう。
あくまで単純な例なので実用上は実際に計測してみてください。