гдеvail -valN обозначают первоначальные значения, которые присваиваются по очереди, слева направо и по порядку индексирования. Для хранения инициализаторов массива в C# автоматически распределяется достаточный объем памяти. А необходимость пользоваться оператором new явным образом отпадает сама собой. В качестве примера ниже приведен улучшенный вариант программы, вычисляющей среднее арифметическое.

// Вычислить среднее арифметическое ряда значений.

using System;

class Average {

static void Main() {

int[] nums = { 99, 10, 100, 18, 78, 23,

63, 9, 87, 49 };

int avg = 0;

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

avg = avg + nums[i]; avg = avg /10;

Console.WriteLine("Среднее: " + avg);

}

}

Любопытно, что при инициализации массива можно также воспользоваться оператором new, хотя особой надобности в этом нет. Например, приведенный ниже фрагмент кода считается верным, но избыточным для инициализации массива nums в упомянутой выше программе.

int[] nums = new int[] { 99, 10, 100, 18, 78, 23,

63, 9, 87, 49 };

Несмотря на свою избыточность, форма инициализации массива с оператором new оказывается полезной в том случае, если новый массив присваивается уже существую-щейгпеременной ссылки на массив. Например:

int[] nums;

nums = new int[]    {    99,    10, 100, 18, 78, 23,

63, 9, 87, 49 };

В данном случае переменная nums объявляется в первом операторе и инициализируется во втором.

И последнее замечание: при инициализации массива его размер можно указывать явным образом, но этот размер должен совпадать с числом инициализаторов. В качестве примера ниже приведен еще один способ инициализации массива nums.

int[] nums = new int[10]    {    99,    10,    100, 18, 78, 23,

63, 9, 87, 49 };

В этом объявлении размер массива nums задается равным 10 явно.

Соблюдение границ массива

Границы массива в C# строго соблюдаются. Если границы массива не достигаются или же превышаются, то возникает ошибка при выполнении. Для того чтобы убедиться в этом, попробуйте выполнить приведенную ниже программу, в которой намеренно превышаются границы массива.

// Продемонстрировать превышение границ массива.

using System;

class ArrayErr {

static void Main() {

int[] sample = new int[10]; int i;

// Воссоздать превышение границ массива. for(i =0; i < 100; i = i+1) sample[i] = i;

Как только значение переменнойiдостигает 10, возникнет исключительная ситуация типаIndexOutOfRangeException,связанная с выходом за пределы индексирования массива, и программа преждевременно завершится. (Подробнее об исключительных ситуациях и их обработке речь пойдет в главе 13.)

Многомерные массивы

Перейти на страницу:

Похожие книги