Полное руководство по языку программирования С# 14 и платформе .NET 10 / Коллекции

Класс Array и массивы

Начальный ⏱ 5 мин чтения 👁 2 🕓 обновлено 11.08.2026

Все массивы в C# построены на основе класса Array из пространства имен System. Этот класс определяет ряд свойств и методов, которые мы можем использовать при работе с массивами. Основные свойства и методы:

  • Свойство Length возвращает длину массива

  • Свойство Rank возвращает размерность массива

  • int BinarySearch (Array array, object? value) выполняет бинарный поиск в отсортированном массиве и возвращает индекс найденного элемента

  • void Clear (Array array) очищает массив, устанавливая для всех его элементов значение по умолчанию

  • void Copy (Array sourceArray, int sourceIndex, Array destinationArray, int destinationIndex, int length) копирует из массива sourceArray начиная с индекс sourceIndex length элементов в массив destinationArray начиная с индекса destinationIndex

  • bool Exists<T> (T[] array, Predicate<T> match) проверяет, содержит ли массив array элементы, которые удовлеворяют условию делегата match

  • void Fill<T> (T[] array, T value) заполняет массив array значением value

  • T? Find<T> (T[] array, Predicate<T> match) находит первый элемент, который удовлеворяет определенному условию из делегата match. Если элемент не найден, то возвращается null

  • T? FindLast<T> (T[] array, Predicate<T> match) находит последний элемент, который удовлеворяет определенному условию из делегата match. Если элемент не найден, то возвращается null

  • int FindIndex<T> (T[] array, Predicate<T> match) возвращает индекс первого вхождения элемента, который удовлеворяет определенному условию делегата match

  • int FindLastIndex<T> (T[] array, Predicate<T> match) возвращает индекс последнего вхождения элемента, который удовлеворяет определенному условию

  • T[] FindAll<T> (T[] array, Predicate<T> match) возвращает все элементы в виде массива, которые удовлеворяет определенному условию из делегата match

  • int IndexOf (Array array, object? value) возвращает индекс первого вхождения элемента в массив

  • int LastIndexOf (Array array, object? value) возвращает индекс последнего вхождения элемента в массив

  • void Resize<T> (ref T[]? array, int newSize) изменяет размер одномерного массива

  • void Reverse (Array array) располагает элементы массива в обратном порядке

  • void Sort (Array array) сортирует элементы одномерного массива

Разберем самые используемые методы.

Сортировка массива

Отсортируем массив с помощью метода Sort():


string[] people =  { "Tom", "Sam", "Bob", "Kate", "Tom", "Alice" };

Array.Sort(people);

foreach (var person in people) 
    Console.Write($"{person} ");
	
// Alice Bob Kate Sam Tom Tom

Этот метод имеет много перегрузок. Например, одна из версий позволяет отсортировать только часть массива:


string[] people =  { "Tom", "Sam", "Bob", "Kate", "Tom", "Alice" };

// сортируем с 1 индекса 3 элемента
Array.Sort(people, 1, 3);

foreach (var person in people) 
    Console.Write($"{person} ");
	
// Tom Bob Kate Sam Tom Alice

Поиск индекса элемента


string[] people = { "Tom", "Sam", "Bob", "Kate", "Tom", "Alice" };

// находим индекс первого элемента "Tom"
int tomFirstIndex = Array.IndexOf(people, "Tom");
// находим индекс последнего элемента "Tom"
int tomLastIndex = Array.LastIndexOf(people, "Tom");
// находим индекс первого элемента, у которого длина строки больше 3
int lengthFirstIndex = Array.FindIndex(people, person => person.Length > 3);
// находим индекс последнего элемента, у которого длина строки больше 3
int lengthLastIndex = Array.FindLastIndex(people, person => person.Length > 3);

Console.WriteLine($"tomFirstIndex: {tomFirstIndex}");		// 0
Console.WriteLine($"tomLastIndex: {tomLastIndex}");			// 4
Console.WriteLine($"lengthFirstIndex: {lengthFirstIndex}");	// 3
Console.WriteLine($"lengthLastIndex: {lengthLastIndex}");	// 5


// находим индекс элемента "Bob"
// для бинарного поиска коллекцию нужно отсортировать
Array.Sort(people); // Alice Bob Kate Sam Tom Tom
int bobIndex = Array.BinarySearch(people, "Bob");
Console.WriteLine($"bobIndex: {bobIndex}");					// 1

Если элемент не найден в массиве, то методы возвращают -1.

Поиск элемента по условию


string[] people =  { "Tom", "Sam", "Bob", "Kate", "Tom", "Alice" };

// находим первый и последний элементы
// где длина строки больше 3 символов
string? first = Array.Find(people, person => person.Length > 3);
Console.WriteLine(first); // Kate
string? last = Array.FindLast(people, person => person.Length > 3);
Console.WriteLine(last); // Alice

// находим элементы, у которых длина строки равна 3
string[] group = Array.FindAll(people, person => person.Length == 3);
foreach (var person in group) Console.WriteLine(person);
// Tom Sam Bob Tom

Изменение порядка элементов массива

Например, изменим порядок элементов:


string[] people =  { "Tom", "Sam", "Bob", "Kate", "Tom", "Alice" };

Array.Reverse(people);

foreach (var person in people) 
    Console.Write($"{person} ");
// "Alice", "Tom", "Kate", "Bob", "Sam", "Tom"

Также можно изменить порядок только части элементов:


string[] people =  { "Tom", "Sam", "Bob", "Kate", "Tom", "Alice" };

// изменяем порядок 3 элементов начиная c индекса 1  
Array.Reverse(people, 1, 3);

foreach (var person in people) 
    Console.Write($"{person} ");
// "Tom", "Kate", "Bob", "Sam", "Tom", "Alice"

В данном случае изменяем порядок только 3 элементов начиная c индекса 1.

Изменение размера массива

Для изменения размера массива применяется метод Resize. Его первый параметр - изменяемый массив, а второй параметр - количество элементов, которые должны быть в массиве. Если второй параметр меньше длины массива, то массив усекается. Если значение параметра, наоборот, больше, то массив дополняется дополнительными элементами, которые имеют значение по умолчанию. Причем первый параметр передается по ссылке:


string[] people =  { "Tom", "Sam", "Bob", "Kate", "Tom", "Alice" };

// уменьшим массив до 4 элементов
Array.Resize(ref people, 4);

foreach (var person in people) 
    Console.Write($"{person} ");
// "Tom", "Sam", "Bob", "Kate"

Копирование массива

Метод Copy копирует часть одного массива в другой:


string[] people =  { "Tom", "Sam", "Bob", "Kate", "Tom", "Alice" };

var employees = new string[3];

// копируем 3 элемента из массива people c индекса 1  
// и вставляем их в массив employees начиная с индекса 0
Array.Copy(people,1, employees,0, 3);

foreach (var person in employees) 
    Console.Write($"{person} ");
// Sam Bob Kate

В данном случае копируем 3 элемента из массива people начиная c индекса 1 и вставляем их в массив employees начиная с индекса 0.

Проверь себя

📋 Тест по теме «Класс Array и массивы» Тест по теме

Практические задания

Лёгкое Ручная проверка Заполните пропуск в коде (1)
+10 XP

В приведённом ниже фрагменте кода из этого урока пропущено одно слово. Определите его и впишите в поле ответа (без кавычек и пробелов).

string[] _____ =  { "Tom", "Sam", "Bob", "Kate", "Tom", "Alice" };

Array.Sort(people);

foreach (var person in people) 
    Console.Write($"{person} ");
	
// Alice Bob Kate Sam Tom Tom
Войдите, чтобы отправить решение
Лёгкое Ручная проверка Заполните пропуск в коде (2)
+10 XP

В приведённом ниже фрагменте кода из этого урока пропущено одно слово. Определите его и впишите в поле ответа (без кавычек и пробелов).

string[] people =  { "_____", "Sam", "Bob", "Kate", "Tom", "Alice" };

// сортируем с 1 индекса 3 элемента
Array.Sort(people, 1, 3);

foreach (var person in people) 
    Console.Write($"{person} ");
	
// Tom Bob Kate Sam Tom Alice
Войдите, чтобы отправить решение
Лёгкое Ручная проверка Заполните пропуск в коде (3)
+10 XP

В приведённом ниже фрагменте кода из этого урока пропущено одно слово. Определите его и впишите в поле ответа (без кавычек и пробелов).

string[] people = { "Tom", "_____", "Bob", "Kate", "Tom", "Alice" };

// находим индекс первого элемента "Tom"
int tomFirstIndex = Array.IndexOf(people, "Tom");
// находим индекс последнего элемента "Tom"
int tomLastIndex = Array.LastIndexOf(people, "Tom");
// находим индекс первого элемента, у которого длина строки больше 3
int lengthFirstIndex = Array.FindIndex(people, person => person.Length > 3);
// находим индекс последнего элемента, у которого длина строки больше 3
int lengthLastIndex = Array.FindLastIndex(people, person => person.Length > 3);

Console.WriteLine($"tomFirstIndex: {tomFirstIndex}");		// 0
Console.WriteLine($"tomLastIndex: {tomLastIndex}");			// 4
Console.WriteLine($"lengthFirstIndex: {lengthFirstIndex}");	// 3
Console.WriteLine($"lengthLastIndex: {lengthLastIndex}");	// 5


// находим индекс элемента "Bob"
// для бинарного поиска коллекцию нужно отсортировать
Array.Sort(people); // Alice Bob Kate Sam Tom Tom
int bobIndex = Array.BinarySearch(people, "Bob");
Console.WriteLine($"bobIndex: {bobIndex}");					// 1
Войдите, чтобы отправить решение
Лёгкое Ручная проверка Заполните пропуск в коде (4)
+10 XP

В приведённом ниже фрагменте кода из этого урока пропущено одно слово. Определите его и впишите в поле ответа (без кавычек и пробелов).

string[] people =  { "Tom", "Sam", "_____", "Kate", "Tom", "Alice" };

// находим первый и последний элементы
// где длина строки больше 3 символов
string? first = Array.Find(people, person => person.Length > 3);
Console.WriteLine(first); // Kate
string? last = Array.FindLast(people, person => person.Length > 3);
Console.WriteLine(last); // Alice

// находим элементы, у которых длина строки равна 3
string[] group = Array.FindAll(people, person => person.Length == 3);
foreach (var person in group) Console.WriteLine(person);
// Tom Sam Bob Tom
Войдите, чтобы отправить решение
Лёгкое Ручная проверка Заполните пропуск в коде (5)
+10 XP

В приведённом ниже фрагменте кода из этого урока пропущено одно слово. Определите его и впишите в поле ответа (без кавычек и пробелов).

string[] people =  { "Tom", "Sam", "Bob", "_____", "Tom", "Alice" };

Array.Reverse(people);

foreach (var person in people) 
    Console.Write($"{person} ");
// "Alice", "Tom", "Kate", "Bob", "Sam", "Tom"
Войдите, чтобы отправить решение
Среднее Ручная проверка Восстановите код по памяти (1)
+20 XP

В этом фрагменте кода урока пропущены два ключевых элемента. Впишите оба пропущенных значения через запятую в порядке появления (например: x, 5).

string[] people =  { "Tom", "Sam", "_____", "Kate", "Tom", "Alice" };

Array.Sort(people);

_____ (var person in people) 
    Console.Write($"{person} ");
	
// Alice Bob Kate Sam Tom Tom
Войдите, чтобы отправить решение
Среднее Ручная проверка Восстановите код по памяти (2)
+20 XP

В этом фрагменте кода урока пропущены два ключевых элемента. Впишите оба пропущенных значения через запятую в порядке появления (например: x, 5).

string[] people =  { "Tom", "Sam", "Bob", "_____", "Tom", "Alice" };

// сортируем с 1 индекса 3 элемента
Array.Sort(people, 1, 3);

foreach (var _____ in people) 
    Console.Write($"{person} ");
	
// Tom Bob Kate Sam Tom Alice
Войдите, чтобы отправить решение
Среднее Ручная проверка Расставьте строки кода в правильном порядке
+20 XP

Строки кода из примера этого урока перемешаны. Впишите их в правильном порядке, каждую строку — с новой строки.

string[] people =  { "Tom", "Sam", "Bob", "Kate", "Tom", "Alice" };
foreach (var person in people)
    Console.Write($"{person} ");
// Alice Bob Kate Sam Tom Tom
Array.Sort(people);
Войдите, чтобы отправить решение
Сложное Ручная проверка Объясните и модифицируйте пример из урока «Класс Array и массивы»
+30 XP

Опишите своими словами, что делает приведённый пример кода из урока «Класс Array и массивы», и предложите одно осмысленное изменение (например, другое входное значение или дополнительное условие). Приведите итоговый код.

string[] people =  { "Tom", "Sam", "Bob", "Kate", "Tom", "Alice" };

Array.Sort(people);

foreach (var person in people) 
    Console.Write($"{person} ");
	
// Alice Bob Kate Sam Tom Tom
Войдите, чтобы отправить решение
Сложное Ручная проверка Найдите потенциальную проблему в коде урока «Класс Array и массивы»
+30 XP

Изучите приведённый фрагмент кода и опишите, при каких входных данных или условиях он может сработать не так, как ожидается (граничный случай, отсутствие проверки и т.п.). Предложите исправленный вариант.

string[] people =  { "Tom", "Sam", "Bob", "Kate", "Tom", "Alice" };

// сортируем с 1 индекса 3 элемента
Array.Sort(people, 1, 3);

foreach (var person in people) 
    Console.Write($"{person} ");
	
// Tom Bob Kate Sam Tom Alice
Войдите, чтобы отправить решение
Мини-проект Ручная проверка Мини-проект по теме «Класс Array и массивы»
+50 XP

Соберите небольшую программу, которая последовательно демонстрирует ключевые идеи урока. Программа должна быть рабочей и содержать минимум два самостоятельно написанных фрагмента, а не просто копию примера из урока.

Войдите, чтобы отправить решение
Домашнее задание Ручная проверка Домашнее задание по теме «Класс Array и массивы»
+25 XP

Напишите собственную небольшую программу, применяющую материал темы «Класс Array и массивы». Используйте не менее одной конструкции, показанной в примерах урока. Прикрепите код решения и краткое описание того, что он делает.

Войдите, чтобы отправить решение

Обсуждение (0)

Войдите, чтобы оставить комментарий.