В С# есть свой синтаксис для работы с массивами. Для начала определимся с терминологией.
- Тип массива – это тип который, представляет нам массив элементов. Именно к объекту этого типа мы применяем операцию индексации (взятие элемента по индексу).
- Тип элементов массива – данный массив состоит из элементов одного типа. Этот тип и называется типом элементов массива.
- Длина массива – это количество элементов в массиве.
В C# тип “массив” образуется из типа элементов и квадратных скобок. Этот тип мы можем использовать при определении переменных, а также везде, где от нас требуется какой-нибудь тип.
Фрагмент 1.10
string[] users = new string[10];
Следующий код создает массив с 10 элементами. По умолчанию, в данном случае, в каждой ячейке массива будет значение null (такое значение будет для всех ссылочных типов).
Над переменной users мы можем осуществлять следующие операции.
Фрагмент 1.11
string[] users = new string[10];
users[0] = “Roma”; //Запись в первый элемент
users[9] = “Vlad”; //Запись в последний элемент
Console.WriteLine(users.Length); //Чтение длины, выведет 10
string currentUser = users[users.Length - 1]; // Чтение последнего элемента, мы также могли бы использовать значение 0
Как вы видите, мы повсеместно используем квадратные скобки. Они являются оператором индексации, внутри которого мы можем писать значения типа int, а также, как вы понимаете, любые выражения, в результате которых будет int.
Фрагмент 1.12
string[] users = new string[10];
users[0] = “Roma”;
users[9] = “Vlad”;
Console.WriteLine(users[5 - 5]); //Выведет Roma
Перебор массивов циклами
С помощью циклов мы можем перебирать массивы. Давайте попробуем просто вывести все значения массива.
Фрагмент 1.13
string[] users = new string[3];
users[0] = “Roma”;
users[1] = “Vlad”;
users[2] = “Igor”;
Console.WriteLine(“В системе есть следующие пользователи:”);
for(int i = 0; i < users.Length; i++)
{
Console.WriteLine(users[i]);
}
Данный код выведет все имена в массиве.
Задачи для практики массивов
Задача 1.
Объявите переменную, которая хранит массив, тип элементов у которого string и поместите туда ссылку на новый массив с типом элементов string, размерностью в 5 элементов. Далее, через оператор индексации, проинициализируйте каждый элемент.
Задача 2.
Напишите программу, которая выведет все элементы массива.
Фрагмент 1.14
int[] numbers = new int[3];
numbers[0] = 1;
numbers[1] = 15;
numbers[2] = 2;
Задача 3.
Напишите программу, которая выведет сумму всех элементов массива.
int[] numbers = new int[3];
numbers[0] = 1;
numbers[1] = 15;
numbers[2] = 2;
Задача 4.
Напишите программу, которая выведет максимальное число в массиве.
Фрагмент 1.15
int[] numbers = new int[3];
numbers[0] = 1;
numbers[1] = 15;
numbers[2] = 2;
Тонкости инициализации
При работе с массивами мы можем использовать синтаксис инициализаторов, которые позволяют задать данные массива удобным синтаксисом.
Фрагмент 1.17
int[] array = {10, 14, 52, 14}; //Создаст массив 4 элементами, можно использовать только в строке объявления переменной.
array = new int[] {5, 2}; //создаст массив 2 элементами, можно использовать везде
int[,] map = {
{1, 1, 1},
{1, 0, 1},
{1, 1, 1}
};
Массив map является двумерным массивом, подробней о таком типе вы узнаете на следующей странице.