İnsanlar neden dizeleri dizgi değişmezleriyle karıştırmaya devam ediyor? Kabul edilen cevap, farklı bir soruya harika bir cevaptır; buna değil.
Bunun eski bir konu olduğunu biliyorum, ama buraya muhtemelen OP ile aynı soru ile geldim ve insanların nasıl yanlış okuduğunu görmek sinir bozucu. Ya da belki de onu yanlış okuyorum, bilmiyorum.
Kabaca bir dize, bir programın yürütülmesi sırasında, metin karakterleriyle eşleştirilebilen bir bayt dizisi içeren bilgisayar belleğinin bir bölgesidir. Bir dizgi değişmezi, diğer taraftan, henüz derlenmemiş olan ve daha sonra içinde göründüğü programın yürütülmesi sırasında bir dizeyi başlatmak için kullanılan değeri temsil eden bir kaynak kod parçasıdır.
C # 'da ifade ...
string query = "SELECT foo, bar"
+ " FROM table"
+ " WHERE id = 42";
... gelmez üç satır dize ancak bir tek astar üretmek; hiçbiri yeni satır değiştirici içermeyen üç dizenin (her biri farklı bir değişmez değerden başlatılan) birleştirilmesi.
OP'nin -en azından bu kelimelerle sorduğum şey- sorduğu şey, derlenmiş dizede, kaynak kodunda bulunanları taklit eden satır sonlarının nasıl tanıtılacağı değil, uzun süre netlik için nasıl ayrılacağıdır. kaynak kodu metnin, tek satır olmadan derlenmiş dizede sonları tanıtan. Ve uzun bir yürütme süresi gerektirmeden, kaynak kodundan gelen birden fazla alt dizeye katılmak için harcadı. Javascript veya C ++ 'da çok satırlı bir dize değişmezi içindeki sondaki ters eğik çizgiler gibi.
Kelimelerin iplerini tersine çevirerek ve neyi içermeyen kelimesi kelimesine dizelerin, nevermind StringBuilder
s, String.Join
s ve hatta iç içe işlevlerin kullanılmasını önermek , insanların soruyu gerçekten anlamadıklarını düşündürüyor. Ya da belki de anlamıyorum.
Bildiğim kadarıyla, C # (en azından hala kullandığım paleolitik versiyonda, önceki on yıldan beri) derleme sırasında yürütme yerine çözülebilen çok satırlı dize değişmezlerini üretme özelliğine sahip değil.
Belki şu anki sürümler bunu destekliyor, ancak dizeler ve dize değişmezleri arasında algıladığım farkı paylaşacağımı düşündüm.
GÜNCELLEME:
(MeowCat2012'nin yorumundan) Yapabilirsiniz. OP'nin "+" yaklaşımı en iyisidir. Spesifikasyonlara göre optimizasyon garanti edilir: http://stackoverflow.com/a/288802/9399618