มันไม่ - คอมไพเลอร์ C # ทำ :)
ดังนั้นรหัสนี้:
string x = "hello";
string y = "there";
string z = "chaps";
string all = x + y + z;
ได้รับการรวบรวมเป็น:
string x = "hello";
string y = "there";
string z = "chaps";
string all = string.Concat(x, y, z);
(Gah - การแก้ไขการแทรกแซงลบบิตอื่น ๆ โดยไม่ตั้งใจ)
ประโยชน์ของการสังเกตเรียบเรียง C # ว่ามี concatenations สตริงหลายนี่คือการที่คุณไม่ได้สิ้นสุดการสร้างสตริงกลางx + y
ซึ่งก็จะต้องมีการคัดลอกอีกครั้งในฐานะส่วนหนึ่งของการเรียงต่อกันของและ(x + y)
z
แต่เราทำทุกอย่างให้เสร็จในครั้งเดียว
แก้ไข: โปรดทราบว่าคอมไพเลอร์ไม่สามารถทำอะไรได้หากคุณเชื่อมต่อแบบวนซ้ำ ตัวอย่างเช่นรหัสนี้:
string x = "";
foreach (string y in strings)
{
x += y;
}
จบลงด้วยการเทียบเท่ากับ:
string x = "";
foreach (string y in strings)
{
x = string.Concat(x, y);
}
... สิ่งนี้จึงทำให้เกิดขยะจำนวนมากและเป็นเหตุผลที่คุณควรใช้ a StringBuilder
สำหรับกรณีดังกล่าว ฉันมีบทความที่จะให้รายละเอียดเพิ่มเติมเกี่ยวกับทั้งสองข้อซึ่งหวังว่าจะตอบคำถามเพิ่มเติมได้