Computer >> कंप्यूटर ट्यूटोरियल >  >> प्रोग्रामिंग >> C#

C# 7.0 में Ref Locals और Ref Returns क्या हैं?

C# 7.0 ने ref locals और ref returns पेश किए जो रेफरेंस सेमेन्टिक्स के साथ वैल्यू टाइप्स को अधिक कुशलता से संभालने की अनुमति देते हैं।

Ref Locals (रेफरेंस लोकल वेरिएबल्स)

एक ref local वेरिएबल किसी अन्य वेरिएबल का एलियास होता है - वे समान मेमोरी लोकेशन साझा करते हैं।

Ref Local के बिना (वैल्यू कॉपी)

var colors = new[] { "blue", "green", "yellow", "orange", "pink" };
string color = colors[3];  // वैल्यू कॉपी होती है
color = "Magenta";         // केवल लोकल कॉपी बदलती है
// colors[3] अभी भी "orange" है
आउटपुट: blue green yellow orange pink

Ref Local के साथ (रेफरेंस शेयरिंग)

var colors = new[] { "blue", "green", "yellow", "orange", "pink" };
ref string color = ref colors[3];  // रेफरेंस साझा करता है
color = "Magenta";                 // मूल ऐरे भी बदल जाता है
आउटपुट: blue green yellow Magenta pink

Ref Returns (रेफरेंस रिटर्न)

एक मेथड वैल्यू के बजाय वेरिएबल का रेफरेंस लौटा सकता है।

सामान्य रिटर्न (वैल्यू द्वारा)

public static string GetColor(string[] col, int index) {
    return col[index];  // वैल्यू कॉपी लौटाता है
}

string color = GetColor(colors, 3);
color = "Magenta";  // मूल ऐरे अपरिवर्तित रहता है

Ref Return के साथ

public static ref string GetColor(string[] col, int index) {
    return ref col[index];  // रेफरेंस लौटाता है
}

ref string color = ref GetColor(colors, 3);
color = "Magenta";  // मूल ऐरे बदल जाता है
आउटपुट: blue green yellow Magenta pink

महत्वपूर्ण नियम

  • Ref return करने वाला मेथड ref कीवर्ड के साथ सिग्नेचर में घोषित होना चाहिए
  • कॉलर को ref का उपयोग करके रिसीव करना होगा: ref var x = ref Method()
  • रेफरेंस एक सुरक्षित स्कोप का होना चाहिए (लोकल वेरिएबल्स का रेफरेंस न लौटाएं)
  • बड़े स्ट्रक्स के साथ परफॉरमेंस सुधार के लिए उपयोगी

उपयोग के मामले

  • बड़े स्ट्रक्स की अनावश्यक कॉपी से बचने के लिए
  • ऐरे/कलेक्शन तत्वों को सीधे संशोधित करने के लिए
  • हाई-परफॉरमेंस कोड में मेमोरी आवंटन कम करने के लिए
  1. - C# में नेमस्पेसेस क्या हैं

    नेमस्पेस नामों के एक सेट को दूसरे से अलग रखने का एक तरीका प्रदान करने के लिए है। नेमस्पेस डेफिनिशन namespace कीवर्ड से शुरू होती है जिसके बाद नेमस्पेस नाम आता है - namespace namespace_name { // code declarations } नेमस्पेस डिफाइन करें - namespace namespace_name { // code declarations } निम्न

  1. - C# में ref और out पैरामीटर्स के बीच अंतर

    Ref पैरामीटर एक रेफरेंस पैरामीटर किसी वेरिएबल के मेमोरी लोकेशन का रेफरेंस होता है। जब आप पैरामीटर्स को रेफरेंस द्वारा पास करते हैं, तो वैल्यू पैरामीटर्स के विपरीत, इन पैरामीटर्स के लिए नया स्टोरेज लोकेशन नहीं बनाया जाता। आप ref कीवर्ड का उपयोग करके रेफरेंस पैरामीटर्स डिक्लेयर कर सकते हैं। निम्नलिखित

  1. - C# में लेफ्ट शिफ्ट और राइट शिफ्ट ऑपरेटर्स (>> और <<) क्या हैं?

    बिटवाइज़ लेफ्ट शिफ्ट ऑपरेटरबाएं ऑपरेंड का मान दाएं ऑपरेंड द्वारा निर्दिष्ट बिट्स की संख्या से बाएं मूव होता है।बिटवाइज़ राइट शिफ्ट ऑपरेटरबाएं ऑपरेंड का मान दाएं ऑपरेंड द्वारा निर्दिष्ट बिट्स की संख्या से दाएं मूव होता है।निम्न उदाहरण बिटवाइज़ लेफ्ट और राइट शिफ्ट ऑपरेटर्स के साथ काम करने का तरीका दिख