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

Массивы

Одномерные массивы

Одномерный массив - это список однотипных переменных. Для объявления одномерного массива в C# применяется следующий синтаксис:

type[] array_name = new type[size];

Здесь слово type указывает тип массива, то есть тип данных каждого элемента, из которых и состоит массив. Следует обратить внимание на квадратные скобки, которые следуют за ключевым словом, указывающим тип элементов массива. С помощью этих скобок объявляется одномерный массив (далее будет показано, как объявляется двухмерный массив). Количество элементов, которые могут быть помещены в массив, определяется величиной size. Поскольку массивы реализованы как объекты, процесс создания массива состоит из двух этапов. На первом этапе объяв­ляется имя массива— имя переменной ссылочного типа. На втором этапе для массива выделяется память, и переменной массива присваивается ссылка на эту область памяти. То есть, в С# с помощью оператора new память массиву выделяется дина­мически.

Следующая строка кода создает массив типа int, состоящий из десяти элементов, ссылка на него присваивается переменной ссылочного типа sample:

int[] sample = new int[10];

Массив объявляется так же, как объект. Переменная sample хранит ссылку на адрес памяти, выделенной оператором new. Размер выделенной памяти достаточен дляхранения десяти элементов типа int.

Объявление массива (так же как объявление объекта) можно выполнить с помощью двух операторов. Например,

int[ ] sample;

sample = new int[10];

В этом случае после создания переменная массива sample не будет ссылаться на какой-либо физический объект. Только после выполнения второго оператора переменной присваивается ссылка на массив.

Доступ к отдельному элементу массива осуществляется с использованием индекса. С его помощью указывается позиция элемента в пределах массива. Первый элемент всех массивов в С# имеет нулевой индекс. Поскольку массив sample состоит из 10 элементов, значения индексов элементов этого массива находятся в диапазоне от 0 до 9. Для индексации массива необходимо указать количество его элементов вквадратных скобках. Таким образом, первый элемент массива sample указывается как sample [0], а последний элемент — sample [9]. Например, в приведенном далее фрагменте кода в массив sample помещаются значения от 0 до 9.

Демонстрация использования одномерного массива

using System;

Class ArrayDemo

{

public static void Main()

{

int[] sample = new int [10];

int i;

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

sample[i] = i;

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

Console.WriteLine("Элементу sample[" + i +

"] присвоено значение; " + sample[i]);

}

}

Помимо явной инициализации инициализировать массив в C# можно следующим образом.

type[] array-name = {val_1, val_2, … valN };

Значения из фигурных скобок по очереди присваиваются элементам массива, начиная с индекса 0.

В С# строго контролируется обращение к элементу массива. Следует указывать индекс, не превышающий граничные значения индексов этого массива, в противном случае возникнет ошибка выполнения программы.

Двумерные массивы

Самым простым из многомерных массивов является двухмерный массив. В нем расположение конкретного элемента определяется двумя индексами. Двухмерный массив можно рассматривать как информационную таблицу, один индекс которой указывает номер строки, а другой — номер столбца.

Двухмерный целочисленный массив table с размерностью 10x20 объявляется сле­дующим образом:

int[ , ] table = new int[10, 20];

При объявлении данного массива две указываемые размерности массива разделены запятой. В первой части оператора с помощью запятой в квадратных скобках [ , ] указывается, что создается переменная ссылочного типа для двухмерного массива. Выделение памяти для массива с помощью оператора new происходит при выполнении второй части объявления массива:

new inc[10, 20]

При этом создается массив с размерностью 10x20. Обратите внимание, что значения размерности разделены запятой.

Для получения доступа к элементу двухмерного массива необходимо указать два индекса, разделив их запятой. Например, для присваивания элементу массива table[3,5] значения 10 необходимо использовать следующий оператор:

table[3, 5] = 10;

Ниже представлена программа, в которой элементам двухмерного массива присваи­ваются значении от 1 до 12, а затем эти значения выводятся на экран.

using System;

Class TwoD

{

public static void Main()

{

int t, i;

int[ , ] table = new int[3, 4};

for(t=0; t < 3; t++)

{

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

{

table[t,i] = (t*4) +i+1;

Console.Write(table[t,i] + " ");

}

}

}

}

В этой программе элемент table [0,0] будет иметь значение 1, элемент table [0, 1 ] - значение 2, элемент table [0, 2] - значение 3 и т. д. Элемент table [2, 3] будет иметь значение 12. Ниже приведено схематическое изображение массива.

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

Когда значение одной переменной ссылочного типа, которая ссылается на массив, присваивается другой переменной такого типа, то второй переменной присваивается ссылка на тот же массив, на который ссылалась первая переменная. При этом не создается копия массива и не копируется содержимое одного массива в другой. Об этом стоит помнить.

Наши рекомендации