Присваивание ссылок на массивы

Присваивание значения одной переменной ссылки на массив другой переменной, по существу, означает, что обе переменные ссылаются на один и тот же массив, и в этом отношении массивы ничем не отличаются от любых других объектов. Такое присваивание не приводит ни к созданию копии массива, ни к копированию содержимого одного массива в другой. В качестве примера рассмотрим следующую программу.

// Присваивание ссылок на массивы.

using System;

class AssignARef {

  static void Main() { int i;

    int[] numsl = new int [10];

    int[] nums2 = new int [10];

    for(i=0; i < 10; i++) numsl[i] = i;

    for(i=0; i < 10; i++) nums2[i] = -i;

    Console.Write("Содержимое массива numsl: ");

    for(i=0; i < 10; i++)

      Console.Write(numsl[i] + " ");

    Console.WriteLine() ;

    Console.Write("Содержимое массива nums2: ");

    for(i=0; i < 10; i++)

      Console.Write(nums2[i] + " ") ;

    Console.WriteLine() ;

    nums2 = numsl; // теперь nums2 ссылается на numsl

    Console.Write("Содержимое массива nums2 " + "после присваивания: ");

    for(i=0; i < 10; i++)

      Console.Write(nums2[i] + " ") ;

    Console.WriteLine() ;

    // Далее оперировать массивом numsl посредством

    // переменной ссылки на массив nums2. nums2[3] = 99;

    Console.Write("Содержимое массива numsl после изменения " +

         "посредством переменной nums2: "); for (i=0; i < 10; i++)

    Console.Write(numsl[i] + " ") ;

    Console.WriteLine() ;

  }

}

Выполнение этой    программы приводит к следующему    результату.

Содержимое массива    numsl:    0 1 2 3 4 5 6 7 8 9

Содержимое массива    nums2:    0 -1 -2 -3 -4 -5 -6 -7 -8 -9

Содержимое массива    nums2

после присваивания: 0 1 2 3 4 5 6 7 8 9  

Содержимое массива numsl после изменения

посредством переменной nums2: 0 1 2 99 4 5 6 7 8 9

Как видите, после присваивания переменной nums 2 значения переменной numsl обе переменные ссылки на массив ссылаются на один и тот же объект.