Как и при создании экземпляра класса, приведенное выше объявление массива можно разделить на два отдельных оператора. Например:
int[] sample; sample = new int[10];
В данном случае переменная sample не ссылается на какой-то определенный физический объект, когда она создается в первом операторе. И лишь после выполнения второго оператора эта переменная ссылается на массив.
Доступ к отдельному элементу массива осуществляется по индексу: Индекс обозначает положение элемента в массиве. В языке C# индекс первого элемента всех массивов оказывается нулевым. В частности, массив sample состоит из 10 элементов с индексами от 0 до 9. Для индексирования массива достаточно указать номер требуемого элемента в квадратных скобках. Так, первый элемент массива sample обозначается как sample [ 0 ] , а последний его элемент — как sample [ 9 ]. Ниже приведен пример программы, в которой заполняются все 10 элементов массива sample.
// Продемонстрировать одномерный массив.
using System;
class ArrayDemo {
static void Main() {
int[] sample = new int[10];
4int 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]);
}
}
При выполнении этой программы получается следующий результат.
sample[0]: 0 sample[1]: 1 sample[2]: 2
sample[3]: 3 r
sample[4]: 4
sample[5]: 5
sample[6]: 6
sample[7]: 7
sample[8]: 8
sample[9]: 9
Схематически массив sample можно представить таким образом.
0
1
2
3
4
5
6
7
8
9
о
CN
CO
i/ч
40
r-
00
Os
£
£
JJ
QJ
£
£
£
£
£
'cl
Q,
"cl
'E
TL
g.
В
В
В
В
й
В
в
В
В
03
03
03
03
03
03
cd
03
C/3
C/3
C/3
C/3
ХЛ
C/3
C/3
C/3
C/3
СЛ
Массивы часто применяются в программировании потому, что они дают возможность легко обращаться с большим числом взаимосвязанных переменных. Например, в приведенной ниже программе выявляется среднее арифметическое ряда значений, хранящихся в массиве nums, который циклически опрашивается с помощью оператора цикла for.
// Вычислить среднее арифметическое ряда значений.
using System;
class Average {
static void Main() {
int[] nums = new int[10]; int avg = 0;
nums[0] = 99; nums[1] = 10; nums[2] = 100; nums[3] = 18; nums[4] = 78; nums[5] = 23; nums[6] = 63; nums[7] = 9; nums[8] = 87; nums[9] = 4 9;
for (int i=0; i < 10; i++) avg = avg + nums[i];
avg = avg / 10;
Console.WriteLine("Среднее: " + avg);
}
}
Результат выполнения этой программы выглядит следующим образом.
Среднее: 53
Инициализация массива
В приведенной выше программе первоначальные значения были заданы для элементов массива nums вручную в десяти отдельных операторах присваивания. Конечно, такая инициализация массива совершенно правильна, но то же самое можно сделать намного проще. Ведь массивы могут инициализироваться, когда они создаются. Ниже приведена общая форма инициализации одномерного массива:
тип[] имя_массива = {vail, val2, val3, ..., valN) ;
где vail -val N обозначают первоначальные значения, которые присваиваются по очереди, слева направо и по порядку индексирования. Для хранения инициализаторов массива в 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;
Читать дальше