Назад Вперед Содержание

Массивы в языке C#

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

Число индексов характеризует размерность массива (одномерный, двумерный).

Каждый индекс изменяется в некотором диапазоне [0,n].

Элементы массива нумеруются с нуля.

В языке C#, как и во многих других языках, индексы задаются целочисленным типом. 

Массивы в языке C# относятся к ссылочным типам, то есть являются динамическими. Поэтому память им отводится во время выполнения программы, в "куче".

При описании массива, сам массив не формируется, а создается только ссылка на него, имеющая неопределенное значение Null. Поэтому пока элементы массива не будут проинициализированы, использовать его в вычислениях нельзя. 

Описание одномерного массива, без инициализации

При описании массива не указывается размер (количество элементов):

int [] Arr1;

Person [] Arr2;

Массив Arr1 будет содержать целые числа (то есть значения), а массив Arr2 – объекты класса Person (то есть ссылки на объекты).

Квадратные скобки в C# указываются после типа, перед именем массива.

Описание двумерного массива, без инициализации

При описании двумерного массива не указывается количество строк и столбцов

int [,] Arr;

Массив Arr будет содержать целые числа.

Количество строк и столбцов неизвестно

Описание одномерного массива, с инициализацией

Существует два варианта инициализации:

  1. В первом случае инициализация является явной и задается константным массивом. Например: double[] x= {5.5, 6.6, 7.7};
    Элементы имеют индексы: 0, 1, 2.
  2. Во втором случае создание и инициализация массива выполняется в объектном стиле с вызовом конструктора массива new. И это наиболее распространенная практика объявления массивов. Пример: int[] d= new int[5];
    Здесь 5 – количество элементов массива, а их индексы 0, 1, 2, 3, 4.
    Во этом случае в динамической памяти создается сам массив, элементы которого инициализируются константами соответствующего типа (ноль для арифметики, пустая строка для строковых массивов), и ссылка связывается с этим массивом.  Если количество элементов массива заранее неизвестно, то сначала вводится количество элементов, а потом инициализируется массив.

Примеры описаний одномерного массива с инициализацией

Массив создается с помощью операции new:
//  все 4 элемента равны 0
int[] b = new int[4]; 
//  если указаны значения, new можно не писать
int[] c = { 61, 2, 5, -9 };                       
// размерность вычисляется
int[] d = new int[] { 61, 2, 5, -9 };  
// избыточное описание
int[] e = new int[4] { 61, 2, 5, -9 };

Примеры описаний двумерного массива с инициализацией

//массив из 2 строк и 3 столбиков
//все элементы равны 0
int [ , ] b = new int [ 2,3 ] ; 
//new подразумевается
// массив из 2 строки и 3 столбиков
int [ , ] с = { { 1 , 2, 3 } , {4, 5, 6 } } ;
//размерность вычисляется 2стр и 3 столбца
int [ , ] с = new int [ , ] { { 1 , 2, 3 } , {4, 5, 6 } } ;
//избыточное описание
int [ , ] d = new int [ 2,3 ] { { 1 , 2, 3 } , {4, 5, 6 } } ;

Пример

Заполнить целочисленную матрицу размером 3x4 случайными числами. Найти:

Назад Вперед Содержание