क्या वे? या अपने कार्यक्रम को गति देने के लिए क्या मुझे उन्हें संदर्भ से पारित करना चाहिए?
क्या वे? या अपने कार्यक्रम को गति देने के लिए क्या मुझे उन्हें संदर्भ से पारित करना चाहिए?
जवाबों:
संदर्भ पारित हो जाता है मूल्य से ।
.NET में एरर्स ढेर पर ऑब्जेक्ट हैं, इसलिए आपके पास एक संदर्भ है। उस संदर्भ को मूल्य द्वारा पारित किया जाता है, जिसका अर्थ है कि सरणी की सामग्री में परिवर्तन कॉलर द्वारा देखा जाएगा, लेकिन सरणी को पुन: असाइन करना नहीं होगा:
void Foo(int[] data) {
data[0] = 1; // caller sees this
}
void Bar(int[] data) {
data = new int[20]; // but not this
}
यदि आप ref
संशोधक जोड़ते हैं , तो संदर्भ को संदर्भ द्वारा पारित किया जाता है - और कॉल करने वाले को या तो ऊपर परिवर्तन दिखाई देगा।
वे मूल्य द्वारा पारित कर रहे हैं (जैसा कि सभी मापदंडों है कि न तो रेफरी और न ही बाहर कर रहे हैं), लेकिन मूल्य है ताकि वे प्रभावी ढंग से संदर्भ द्वारा पारित कर रहे हैं, ऑब्जेक्ट के संदर्भ।
हां, वे C # में डिफ़ॉल्ट रूप से संदर्भ द्वारा पारित किए जाते हैं। C # में सभी ऑब्जेक्ट्स, वैल्यू टाइप्स को छोड़कर। थोड़ा और अधिक सटीक होने के लिए, वे "मूल्य से संदर्भ द्वारा" पारित किए जाते हैं; यह है, चर है कि आप अपने तरीकों में देखते हैं कि मूल वस्तु पारित संदर्भ का एक संदर्भ है। यह एक छोटा शब्दार्थ बिंदु है, लेकिन ऐसा कभी-कभी महत्वपूर्ण हो सकता है।