Тогда вот вам сравнительный анализ разных методов конкатинации строк:
static void Main(string[] args)
{
Stopwatch sw = new Stopwatch();
const int length = 1000000;
string[] res = new string[length];
// KISS
sw.Restart();
for (int i = 0; i < length; i++)
{
res[i] = "(" + i.ToString() + ")";
}
sw.Stop();
Console.WriteLine(sw.ElapsedMilliseconds); // 642
// Медленнее из-за боксинга. Не забываем про ToString().
sw.Restart();
for (int i = 0; i < length; i++)
{
res[i] = "(" + i + ")";
}
sw.Stop();
Console.WriteLine(sw.ElapsedMilliseconds); // 687
// Самый медленный вариант и не самый удобный.
sw.Restart();
for (int i = 0; i < length; i++)
{
res[i] = String.Format("({0})", i.ToString());
}
sw.Stop();
Console.WriteLine(sw.ElapsedMilliseconds); // 878!
// Не на много быстрее чем первый, но самый не удобный.
// Имеет смысл использовать, если критична скорость или требуется сложная конкатинация.
sw.Restart();
StringBuilder sb = new StringBuilder();
for (int i = 0; i < length; i++)
{
res[i] = sb.Clear()
.Append("(")
.Append(i.ToString())
.Append(")")
.ToString();
}
sw.Stop();
Console.WriteLine(sw.ElapsedMilliseconds); // 631
Console.ReadLine();
}
Вывод: использовать "+" - это нормально.