これらは、私が読んでいる ac# の本からの例です。この例が実際に何をしているのかを理解するのに少し苦労しています。ここで何が起こっているのかをさらに理解するのに役立つ説明が必要です。
//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 です。
今私の混乱は、メソッド FirstDouble の for ループが元の呼び出し元の firstArray を値で渡された場合に 2,4,6 に変更した方法です。値は 1,2,3 のままにしておくべきだと思いました。
前もって感謝します