2012-04-26 33 views

cevap

124

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.

+8

İ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

+0

@frenchie: Bunun için düzenleyecek. –

+0

Ah tamam! Bu yüzden, StringBuilder'ı birleştirme için kullanmak daha iyi? – frenchie

İlgili konular