Это пример из книги С#, которую я читаю, просто испытывая небольшую неприятность, понимая, что этот пример на самом деле делает, хотел бы объяснить объяснение, чтобы помочь мне понять, что здесь происходит.
//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 };
В основном есть код, который я хотел бы знать, так это то, что в книге говорится, что массив передается по значению, чем исходный вызывающий, который не модифицируется методом (из того, что я понимаю). Таким образом, к концу метода FirstDouble они пытаются назначить локальный массив переменных новому набору элементов, который терпит неудачу, а новые значения исходного вызывающего абонента при отображении - 2,4,6.
Теперь моя путаница в том, как цикл for в методе FirstDouble изменял первоначальный вызывающий firstArray до 2,4,6, если он был передан по значению. Я думал, что стоимость должна оставаться 1,2,3.
Заранее спасибо