संदर्भ द्वारा एक मान प्रकार पासिंग ढेर पर इसके स्थिति का कारण बनता है मूल्य ही बजाय पारित कर दिया करने के लिए। इसका मुक्केबाजी और अनबॉक्सिंग से कोई लेना देना नहीं है। यह इस बारे में सोचता है कि रिक्त कॉल के दौरान स्टैक कैसा दिखता है, क्योंकि प्रत्येक एकल कॉल स्टैक पर "समान" स्थान को संदर्भित करता है।
मुझे लगता है कि भ्रम का एक बहुत MSDN's paragraph on boxing and unboxing से आता है:
मुक्केबाजी प्रक्रिया है जिसके तहत एक मान प्रकार एक संदर्भ प्रकार में बदल जाता है करने के लिए व्यक्ति का नाम है। जब आप एक चर को बॉक्स करते हैं, तो आप एक संदर्भ चर बना रहे हैं जो ढेर पर एक नई प्रति को इंगित करता है। संदर्भ चर, एक वस्तु है ...
संभवत: दो अलग बातें के बीच आप भ्रमित: 1) एक वस्तु है, जो कर रहा है कहने के लिए एक मान प्रकार के रूप में आप करेंगे "परिवर्तित", परिभाषा एक संदर्भ प्रकार:
int a = 5;
object b = a; // boxed into a reference type
और 2) एक मूल्य के प्रकार पैरामीटर के गुजरने के साथ संदर्भ द्वारा:
main(){
int a = 5;
doWork(ref a);
}
void doWork(ref int a)
{
a++;
}
जो दो अलग-अलग चीजें हैं।
संभवतः मेरी ज्ञान की कमी, लेकिन चलो चलते हैं: रेफरी द्वारा एक मूल्य प्रकार को पार करने से मूल्य की बजाय पारित होने के लिए स्टैक पर स्थिति होती है। मुक्केबाजी और अनबॉक्सिंग के साथ इसका कोई लेना-देना नहीं है, सही? – Adimeus
एमएसडीएन से: "संदर्भ द्वारा पारित होने पर मूल्य प्रकार का कोई मुक्केबाजी नहीं है।" –