Главная arrow Язык программирования C# arrow C# Полное руководство Герберт Шилдт arrow Присваивание ссылок на массивы C# Полное руководство Герберт Шилдт

Присваивание ссылок на массивы C# Полное руководство Герберт Шилдт

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

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

using System;

class AssignARef {
   static void Main() {
      int i;

      int [ ] nums1 = new int [10];
      int [ ] nums2 = new int [10];

      for(i=0; i < 10; i++) nums1 [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 = nums1; // теперь nums2 ссылается на numsl

      Console.Write("Содержимое массива nums2 после\n" + "присваивания: ");
      for(i=0; i < 10; i++)
         Console.Write(nums2 [i] + " ");
      Console.WriteLine();

      // Дал-ее оперировать массивом numsl посредством
      // переменной ссылки на массив nums2.
      nums2[3] = 99;

      Console.Write("Содержимое массива nums1 после изменения\n" + "посредством переменной nums2: ");
      for(i=0; i < 10; i++)
         Console .Write (nums1 [i] + " ");
      Console.WriteLine ();
   }
}


Выполнение этой программы приводит к следующему результату:
   Содержимое массива nums1: 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
   Содержимое массива nums1 после изменения посредством переменной nums2: 0 1 2 99 4 5 6 7 8 9

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