Книга: C# 4.0: полное руководство

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

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

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

// Присваивание ссылок на массивы.
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("Содержимое массива nums2n" + "после присваивания: ");
    for(i=0; i < 10; i++)
      Console.Write(nums2[i] + " ") ;
    Console.WriteLine() ;
    // Далее оперировать массивом numsl посредством
    // переменной ссылки на массив nums2. nums2[3] = 99;
    Console.Write("Содержимое массива numsl после измененияn" +
         "посредством переменной 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 обе переменные ссылки на массив ссылаются на один и тот же объект.

Оглавление книги


Генерация: 1.548. Запросов К БД/Cache: 3 / 1
поделиться
Вверх Вниз