It does not - C# derleyicisi yapar :)
Yani bu kodu: olarak
aslında
string x = "hello";
string y = "there";
string z = "chaps";
string all = x + y + z;
derlenmiş:
string x = "hello";
string y = "there";
string z = "chaps";
string all = string.Concat(x, y, z);
(Gah - Aradan düzenleme yanlışlıkla başka bit kaldırıldı.)
Burada birden çok dize birleştirme olduğunu fark eden C# derleyicisinin yararı, birara dize oluşturmaya son vermemenizdir. Daha sonra, (x + y)
ve z
'un birleşiminin bir parçası olarak tekrar kopyalanması gereken. Bunun yerine, hepsini tek seferde halledelim.
DÜZENLEME: Derleyici 'un bir döngüde birleştirirseniz bir şey yapamayacağını unutmayın. Örneğin, bu kod: yani bu çöp bir sürü oluşturur? ...
string x = "";
foreach (string y in strings)
{
x = string.Concat(x, y);
}
ve bir StringBuilder
kullanmak niye bu kadar:
string x = "";
foreach (string y in strings)
{
x += y;
}
sadece olarak eşdeğer biter bu gibi durumlarda. Daha fazla soruya cevap verebilecek bir article going into more details about the two var.
İyi cevap; sadece bir takip sorusu: eğer bir dizginin içindeki dizgileri birleştiriyorsanız, derleyici, döngü içinde ne olacağını bilemezken .Concat operatörünü nasıl çalıştırır. – frenchie
@frenchie: Bunun için düzenleyecek. –
Ah tamam! Bu yüzden, StringBuilder'ı birleştirme için kullanmak daha iyi? – frenchie