C# string passed as an function argument -
स्ट्रिंग माइस्ट्रिंग; शून्य लिस्टस्ट्रिंग (स्ट्रिंग मायस्ट्रिंग) // यह माइस्ट्रिंग कॉपी की गई है। {// मेरीस्ट्रिंग के लिए लेखन माइस्ट्रिंग [0] = 'बी'; // इसे बदलना सिर्फ कॉपी बदल रहा है} शून्य रीडस्ट्रिंग (स्ट्रिंग मायस्ट्रिंग) // क्या यह मैस्ट्रिंग कॉपी हुआ है, क्या मैं बिल्कुल नहीं लिख रहा हूं? {If (mystring [0] == 'a') // केवल स्ट्रिंग DebugConsole में संपत्ति मिलती है। लिखें ("मैं सिर्फ अपना स्ट्रिंग पढ़ता हूं और पहला अक्षर 'a'"); }
हैलो मुझे आश्चर्य है कि, ऊपर दिए गए मामले में, संकलक दो फ़ंक्शन को भेद करेगा और MyString को फ़ंक्शन के रूप में संदर्भ या इनलाइनिंग के द्वारा रीस्टस्ट्रिंग फ़ंक्शन को अनुकूलित करने का प्रयास करेगा। यदि यह मामला नहीं है, तो क्या करना चाहिए यदि मेरीस्ट्रिंग को बहुत ही नकल की उपेक्षा करना बहुत बड़ा है?
धन्यवाद।
कंपाइलर के ऑप्टिमाइज़ेशन के बावजूद (जो, नहीं, जो भी वैसे भी एक अंतर नहीं होता है), string
टाइप करें सी # में हमेशा संदर्भ से पारित किया जाता है ।
इसके अलावा, स्ट्रिंग
संदर्भ अपरिवर्तनीय है। इसका अर्थ है कि आपका लिखने वाला
फ़ंक्शन पहले स्थान पर संकलित नहीं होगा।
स्ट्रिंगबिल्ल्डर बिल्डर = नया स्ट्रिंगबिल्डर (माइस्ट्रिंग); बिल्डर [0] = 'बी'; MyString = बिल्डर। टॉस्ट्रिंग ();
नोट, ज़ाहिर है, कि यह समाधान फ़ंक्शन के बाहर किए गए string
के लिए कोई संदर्भ नहीं बदलेगा ऐसा करने के लिए, इसे एक ref
पैरामीटर के रूप में पास करें।
Comments
Post a Comment