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