English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
Переменные используются для хранения литеральных значений, а массивы - для хранения множества литеральных значений.
Массив - это структура данных, которая хранит фиксированное количество текстовых значений (элементов) одного типа. Элементы массива хранятся последовательно в памяти.
В C# массив может быть трёх типов: одномерный массив, многомерный массив и решётчатый массив. В этом разделе вы узнаете о одномерных массивах.
На следующем рисунке показано представление массива.
Массив можно объявить, указав тип элементов в квадратных скобках [].
int[] evenNums; // массив целых чисел string[] cities; // массив строк
Следующие строки объявляют массив и добавляют значения в него в одном предложении.
int[] evenNums = new int[5]{ 2, 4, 6, 8, 10 }; string[] cities = new string[3]{ "Mumbai", "London", "New York" };
В этом случае, массив evenNums может хранить до пяти целых чисел. Число 5 в квадратных скобках [] указывает на размер массива. Также, размер массива cities составляет 3. Элементы массива добавляются в список, разделенный запятыми, внутри фигурных скобок {}.
Типовые переменные массива можно определить с помощью var, без квадратных скобок [].
var evenNums = new int[]{ 2, 4, 6, 8, 10 } var cities = new string[]{ "Mumbai", "London", "New York" }
Если необходимо добавить элементы массива при его объявлении, размер является опциональным. Компилятор определяет размер массива на основе количества элементов в фигурных скобках, как показано ниже.
int[] evenNums = { 2, 4, 6, 8, 10 }; string[] cities = { "Mumbai", "London", "New York" }
В следующем примере показано, как создать массив с ошибкой.
// Размер должен быть указан int[] evenNums = new int[]; // Количество элементов должно соответствовать заданному размеру int[] evenNums = new int[5] { 2, 4 }; // var не может быть использован с массивом инициализации var evenNums = { 2, 4, 6, 8, 10 };
Не обязательно声明 и инициализировать массив в одном предложении. Вы можете сначала声明 массив, а затем использовать оператор new для его инициализации.
int[] evenNums; evenNums = new int[5]; // или evenNums = new int[]{ 2, 4, 6, 8, 10 };
Элементы массива можно доступа с помощью индекса. Индекс - это номер, связанный с каждым элементом массива, начинающийся с индекса 0 и заканчивающийся размером массива - 1.
В следующем примере показано, как использовать индекс для добавления/обновления и извлечения элементов массива.
int[] evenNums = new int[5]; evenNums[0] = 2; evenNums[1] = 4; //evenNums[6] = 12; // Вызывает исключение IndexOutOfRange в время выполнения Console.WriteLine(evenNums[0]); // Вывод 2 Console.WriteLine(evenNums[1]); // Вывод 4
Обратите внимание, что попытка добавить элемент, превышающий его заданный размер, вызывает исключение IndexOutOfRangeException.
Использование цикла for для доступа к элементам массива. В условиях выражения цикла for используется свойство length массива.
int[] evenNums = { 2, 4, 6, 8, 10 }; for(int i = 0; i < evenNums.Length; i++) { Console.WriteLine(evenNums[i]); } for(int i = 0; i < evenNums.Length; i++) { evenNums[i] = evenNums[i] + 10; // обновить значение каждого элемента на 10 }
Использование цикла foreach для чтения значений элементов массива без использования индекса.
int[] evenNums = { 2, 4, 6, 8, 10 }; string[] cities = { "Mumbai", "London", "New York" }; foreach(var item in evenNums) { Console.WriteLine(item); } foreach(var city in cities) { Console.WriteLine(city); }
Все массивы в C# производятся от абстрактного базового класса System.Array.
Класс Array реализует интерфейс IEnumerable, что позволяет использовать расширяемые методы LINQ, такие как Max(), Min(), Sum(), reverse() и т.д.
int[] nums = new int[5]{ 10, 15, 16, 8, 6 }; nums.Max(); // возвращает 16 nums.Min(); // возвращает 6 nums.Sum(); // возвращает 55 nums.Average(); // возвращает 55
Класс System.Array также включает методы для создания, работы, поиска и сортировки массивов.
int[] nums = new int[5]{ 10, 15, 16, 8, 6 }; Array.Sort(nums); // сортировка массива Array.Reverse(nums); // сортировка массива по убыванию Array.ForEach(nums, n => Console.WriteLine(n)); // итерация массива Array.BinarySearch(nums, 5); // двоичный поиск
Массив можно передавать в качестве аргумента метода. Массив является типом ссылок, поэтому этот метод может изменить значение элементов массива.
public static void Main() { int[] nums = { 1, 2, 3, 4, 5 }; UpdateArray(nums); foreach(var item in nums) Console.WriteLine(item); } public static void UpdateArray(int[] arr) { for(int i = 0; i < arr.Length; i++) arr[i] = arr[i] + 10; }
Далее Много维ентный массив и Зубчатый массив.