ये एक सी # पुस्तक से उदाहरण हैं जो मुझे लगता है कि यह उदाहरण वास्तव में क्या कर रहा है, यह समझने में थोड़ी परेशानी हो रही है कि मुझे यह समझने में मदद करने के लिए एक स्पष्टीकरण चाहिए कि यहां क्या हो रहा है।मूल्य और संदर्भ द्वारा संदर्भ
//creates and initialzes firstArray
int[] firstArray = { 1, 2, 3 };
//Copy the reference in variable firstArray and assign it to firstarraycopy
int[] firstArrayCopy = firstArray;
Console.WriteLine("Test passing firstArray reference by value");
Console.Write("\nContents of firstArray " +
"Before calling FirstDouble:\n\t");
//display contents of firstArray with forloop using counter
for (int i = 0; i < firstArray.Length; i++)
Console.Write("{0} ", firstArray[i]);
//pass variable firstArray by value to FirstDouble
FirstDouble(firstArray);
Console.Write("\n\nContents of firstArray after " +
"calling FirstDouble\n\t");
//display contents of firstArray
for (int i = 0; i < firstArray.Length; i++)
Console.Write("{0} ", firstArray[i]);
// test whether reference was changed by FirstDouble
if (firstArray == firstArrayCopy)
Console.WriteLine(
"\n\nThe references refer to the same array");
else
Console.WriteLine(
"\n\nThe references refer to different arrays");
//method firstdouble with a parameter array
public static void FirstDouble(int[] array)
{
//double each elements value
for (int i = 0; i < array.Length; i++)
array[i] *= 2;
//create new object and assign its reference to array
array = new int[] { 11, 12, 13 };
मूल रूप से वहाँ कोड मैं जानना चाहूंगा कि क्या उस किताब सरणी मूल फोन करने वाले की तुलना में मूल्य से पारित हो जाता है, तो विधि (मैं क्या समझ से) द्वारा संशोधित नहीं प्राप्त करता है कह रहा है है। तो विधि के अंत की ओर पहली बार वे स्थानीय वैरिएबल सरणी को तत्वों के एक नए सेट में विफल और असाइन करते हैं जो विफल हो जाते हैं और प्रदर्शित होने पर मूल कॉलर के नए मान 2,4,6 होते हैं।
अब मेरा भ्रम यह है कि विधि में लूप के लिए कैसे किया गया है पहले दोहरी मूल कॉलर को संशोधित करें, अगर यह मान द्वारा पारित किया गया तो 2,4,6 पर निकालें। मैंने सोचा कि मूल्य 1,2,3 रहना चाहिए।
अग्रिम
धन्यवाद
[वैल्यू टाइप और संदर्भ प्रकार की समस्या] के संभावित डुप्लिकेट (http://stackoverflow.com/questions/6070892/value-type-and-reference-type-problem) –
@AlexeiLevenkov इस के साथ कहीं और अच्छी तरह से कवर किया गया है, मैं 'उस के लिए बंद करने से नफरत है :( –