एमएसडीएन के अनुसार, यदि सभी सरणी संदर्भ प्रकार हैं, तो दिए गए नमूना कोड में, t2
का नया मान t1
में परिवर्तन को प्रतिबिंबित नहीं करता है?सी # में ऐरे संदर्भ प्रकार हैं, वे मूल्य प्रकार के रूप में क्यों कार्य करते हैं?
string[] data = new[] { "One", "Two" };
var t1 = data[0];
Console.WriteLine(t1);
var t2 = t1;
t2 = "Three"; //assigning the new value, and this should reflect in t1
Console.WriteLine(t2);
Console.WriteLine(t1); // this should print 'Three', but it prints 'One'
Console.Read();
http://msdn.microsoft.com/en-us/magazine/cc301755.aspx
सरणी तंत्र है कि आप एक एक संग्रह के रूप में कई मदों के इलाज के लिए अनुमति देते हैं। माइक्रोसॉफ्ट® .NET कॉमन लैंग्वेज रनटाइम (सीएलआर) एकल-आयामी सरणी, बहुआयामी सरणी, और जंजीर सरणी (सरणी के सरणी) का समर्थन करता है। सभी सरणी प्रकार निश्चित रूप से System.Array से व्युत्पन्न हैं, जो स्वयं सिस्टम.ऑब्जेक्ट से प्राप्त किए गए हैं। इसका मतलब है कि सभी सरणी हमेशा संदर्भ प्रकार होते हैं जो प्रबंधित ढेर पर आवंटित हैं, और आपके ऐप के चर में सरणी के संदर्भ में है और सरणी स्वयं नहीं है।
मेरे लिए यह लगता है कि आप बस 'एक और स्मृति स्थान पर t2' बिंदु दे रहे हैं। –
आप किसी संदर्भ/फ़ील्ड की सामग्री को संदर्भित करने वाले डेटा को म्यूट करने के साथ भ्रमित कर रहे हैं। – CodesInChaos
सरणी स्वयं निश्चित रूप से संदर्भ-प्रकार है, लेकिन यह इसके निहित तत्वों के लिए गिनती नहीं है। वे संदर्भ-प्रकार (कक्षा-वस्तुओं के मामले में), या मूल्य-प्रकार हो सकते हैं। – HimBromBeere