Olmaz - C # derleyicisi yapar :)
Yani bu kod:
string x = "hello";
string y = "there";
string z = "chaps";
string all = x + y + z;
aslında şu şekilde derlenir:
string x = "hello";
string y = "there";
string z = "chaps";
string all = string.Concat(x, y, z);
(Gah - araya giren düzenleme diğer bitleri yanlışlıkla kaldırdı.)
Birden çok dize concatenations burada olduğunu C # derleyicisi Farkettiğin yararı arasında bir ara dize oluşturma sonunda kalmamasıdır x + ysonra arka arkaya gelmesini parçası olarak yeniden kopyalanması gereken hangi (x + y)ve z. Bunun yerine, hepsini tek seferde hallederiz.
DÜZENLEME: Bir döngüde birleştirirseniz derleyicinin hiçbir şey yapamayacağını unutmayın . Örneğin, bu kod:
string x = "";
foreach (string y in strings)
{
x += y;
}
sadece şuna eşdeğerdir:
string x = "";
foreach (string y in strings)
{
x = string.Concat(x, y);
}
... yani bu does çöp bir sürü oluşturur ve bir kullanmalısınız neden bu kadar StringBuilderböyle durumlar için. İkisi hakkında daha fazla ayrıntıya giren bir makalem var ve umarım başka soruları cevaplar.