अनुशंसित, 2024

संपादक की पसंद

C # में रेफ और आउट के बीच अंतर

"Ref" और "Out" C # में उपयोग किए जाने वाले पैरामीटर संशोधक हैं। Ref और out का उपयोग करके, आप किसी भी विधि के संदर्भ में किसी भी प्रकार का मान पास कर सकते हैं। इसके संदर्भ द्वारा किसी भी प्रकार के मूल्य को पास करने का कारण रेफ और आउट कीवर्ड के बीच मुख्य अंतर का परिचय देता है। रेफरी कीवर्ड, तथाकथित मेथड को तर्क की सामग्री को रिफ कीवर्ड से बदल देता है। आउट कीवर्ड एक विधि को एक कॉल पर एक से अधिक मान वापस करने की अनुमति देता है। आइए तुलना चार्ट के साथ रेफ और आउट के बीच के अंतर का अध्ययन करें।

तुलना चार्ट

तुलना के लिए आधाररेफरीबाहर
बुनियादीयह रेफरी कीवर्ड के साथ आगे बढ़े तर्क के मूल्य में परिवर्तन की अनुमति देता है।यह एक विधि को उन मूल्यों को वापस लाने की अनुमति देता है जो एक आउट कीवर्ड द्वारा पूर्ववर्ती हैं।
प्रारंभविधि कॉल से पहले रेफरी पैरामीटर को आरंभीकृत किया जाना चाहिए।समाप्त होने से पहले आउट पैरामीटर को प्रारंभिक विधि के अंदर आरंभीकृत किया जाना चाहिए।
घोषणाएक विधि द्वारा बदल दिया जाने वाला पैरामीटर रेफरी के रूप में घोषित किया जाता है, जबकि विधि घोषणा और विधि कॉलिंग।लौटाए जाने वाले पैरामीटर को विधि घोषणा और विधि कॉलिंग के दौरान रेफ के रूप में घोषित किया जाना चाहिए।

Ref Keyword की परिभाषा

"रेफ" एक पैरामीटर संशोधक है जिसका उपयोग कॉल-बाय-रेफरेंस के साथ एक विधि को कॉल करने के लिए किया जाता है। जब हम चाहते हैं कि किसी विधि के अंदर तर्कों के लिए किए गए परिवर्तन उस चर के मूल मूल्य को दर्शाते हैं, तो रेफ पैरामीटर संशोधक का उपयोग किया जाता है। मान प्रकार जिसे हम एक रेफरी के रूप में घोषित करना चाहते हैं, विधि घोषणा और विधि कॉलिंग के दौरान "रेफरी" कीवर्ड से पहले है। एक विधि को कॉल करने और घोषित करने के दौरान एक से अधिक पैरामीटर को "रेफरी" के रूप में घोषित किया जा सकता है।

 सिस्टम का उपयोग कर; वर्ग DemoRef {सार्वजनिक शून्य वर्ग (ref int s) {s = s * s; }} वर्ग Ref_main {स्थिर शून्य मुख्य () {DemoRef ob = new DemoRef (); int a = 10; Console.WriteLine ("विधि कॉल से पहले:" + a); ob.Square (रेफ एक); // प्रयुक्त रेफरी कॉनसोल कंसोल.ट्राइटलाइन ("कॉल के बाद:" + ए); }} // आउटपुट से पहले विधि कॉल: 10 एक के बाद विधि कॉल: 100 

उपरोक्त कोड में, चर 'a' को विधि स्क्वायर (रेफरी) के तर्क के रूप में पास किया जाता है, इसके साथ पैरामीटर संशोधक रेफ के साथ जोड़ा जाता है। इसका मतलब है कि जो भी विधि में परिवर्तन करता है स्क्वायर (रेफरी) चर 'ए' पर प्रदर्शन करेगा उसके अंदर 'ए' के ​​मूल मूल्य को प्रतिबिंबित करेगा, विधि के बाहर भी।

कुछ महत्वपूर्ण बिंदु हैं जो पैरामीटर संशोधक "रेफ" के साथ काम करते समय याद रखना चाहिए।

  • विधि द्वारा रेफ को आप जिस विधि से पास कर रहे हैं, उसे विधि कॉलिंग से पहले आरंभीकृत किया जाना चाहिए।
  • विधि को रेफरी तर्क के लिए प्रारंभिक मूल्य निर्दिष्ट नहीं करना चाहिए।
  • आप संदर्भ चर के साथ रेफ का भी उपयोग कर सकते हैं।

आउट कीवर्ड की परिभाषा

हर बार जब आप कोई विधि कहते हैं, तो यह केवल एक मान लौटाएगा। यदि आप किसी कॉल पर एक से अधिक मान वापस करने के लिए कोई विधि चाहते हैं, तो "आउट" कीवर्ड का उपयोग उन मापदंडों के साथ किया जाना चाहिए, जिन्हें आप विधि समाप्त होने पर वापस करना चाहते हैं। कभी-कभी ऐसा होता है कि जब हम विधि के लिए कुछ भी पारित नहीं करना चाहते हैं, लेकिन चाहते हैं कि हम जिस पद्धति का उपयोग करते हैं, वह किसी आउट कीवर्ड के साथ मापदंडों को वापस करे। आइए इसे एक उदाहरण से समझते हैं।

 सिस्टम का उपयोग कर; क्लास डेमोऑट {पब्लिक इंट डेम्पोज (डबल एक्स, आउट डबल अंश) {इंट संपूर्ण_नम; full_num = (int) x; अंश = x - संपूर्ण_मान; पूरा_नम; }} वर्ग Out_maint {स्थिर शून्य मुख्य () {DemoOut ob = new DemoOut (); int i; डबल फ़्रेक; i = ob.Decompose (100.125, फ़्रेक); // इस्तेमाल किया गया कीवर्ड कंसोल। क्राइटलाइन ("संपूर्ण संख्या भाग" + i) है; Console.WriteLine ("अंश भाग" + फ़्रेक) है; }} // आउटपुट इंटेगर भाग 100 आंशिक भाग 0.125 है 

उपरोक्त कोड में, विधि Decompose () द्वारा दो मान लौटाए जा रहे हैं। एक यह "रिटर्न" अर्थात संपूर्ण_नाम से लौटता है, और दूसरा यह एक पैरामीटर देता है जो विधि द्वारा कॉल करते समय आउट कीवर्ड द्वारा पूर्ववर्ती है "फ़्रेक"।

आउट कीवर्ड के बारे में याद रखने के लिए महत्वपूर्ण बिंदु।

  • रेफरी कीवर्ड के विपरीत, कीवर्ड आउट का उपयोग करने वाले पैरामीटर को विधि कॉलिंग से पहले आरंभीकृत नहीं किया जाना चाहिए।
  • किसी भी कीवर्ड के साथ पैरामीटर को एक मान निर्दिष्ट किया जाएगा, क्योंकि इसे कहा गया विधि के अंदर अप्रमाणित माना जाता है अर्थात इसका कोई प्रारंभिक मान नहीं है।
  • विधि के समाप्त होने से पहले विधि को आउट पैरामीटर के लिए एक मान निर्दिष्ट करना चाहिए।
  • आउट कीवर्ड संदर्भ चर पर भी लागू होता है।

C # में Ref और Out के बीच मुख्य अंतर

  1. जब रेफ कीवर्ड द्वारा पूर्ववर्ती एक चर को किसी भी विधि से पारित किया जाता है, तो विधि के अंदर इसके लिए किए गए परिवर्तन इसके मूल मूल्य को दर्शाते हैं। जब एक विधि के लिए दिया गया चर कीवर्ड से पहले होता है तो विधि रिटर्न कीवर्ड का उपयोग किए बिना उसे वापस कर देती है।
  2. रेफ पैरामीटर को एक विधि में पारित होने से पहले आरंभीकृत किया जाना चाहिए। दूसरी ओर, आउट पैरामीटर को उस विधि के अंदर आरंभीकृत किया जाना चाहिए जिसे वह पास किया गया है।
  3. किसी विधि को कॉल करने, घोषित करने या परिभाषित करने के दौरान, रेफ पैरामीटर को स्पष्ट रूप से रेफ के रूप में घोषित किया जाता है। दूसरी ओर, एक विधि को कॉल करने, घोषित करने या परिभाषित करने के दौरान, बाहर पैरामीटर स्पष्ट रूप से घोषित किया जाता है।

निष्कर्ष:

जब भी चर को एक विधि के संदर्भ में पास करना होता है, तो रेफ और आउट कीवर्ड का उपयोग किया जा सकता है। जबकि, दोनों कीवर्ड का उपयोग करने का कारण अलग-अलग है, जहां रेफ कीवर्ड का उपयोग रेफ कीवर्ड द्वारा पूर्व में दिए गए तर्क के मूल्य को बदलने के लिए किया जा सकता है, जिसे विधि में पास किया गया है और आउट कीवर्ड का उपयोग पूर्व तर्क के मान को वापस करने के लिए किया जाता है आउट कीवर्ड द्वारा।

Top