यह नहीं है - सी # संकलक करता है :)
तो यह कोड:
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);
(गाह - हस्तक्षेप से अन्य बिट्स को गलती से हटा दिया गया।)
सी # संकलक देख रही वहाँ कई स्ट्रिंग 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);
}
... तो यह करता है कचरा का एक बहुत उत्पन्न, और क्यों आप एक का उपयोग करना चाहिए यह है StringBuilder
इस तरह के मामलों के लिए। मेरे पास दोनों के बारे में अधिक विवरणों में जाने वाला एक लेख है, जो आगे के प्रश्नों के उत्तर देगा।