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