Урок #8 – Массивы данных. Одномерные и многомерные

Урок #8 – Массивы данных. Одномерные и многомерные

Для хранения большого объема данных можно использовать массивы. За урок мы изучим концепцию использования массивов и научимся создавать одномерные и многомерные массивы данных.

Видеоурок

Массивы позволяют хранить большой объем информации в одном месте. В языке C# можно найти несколько основных типов массивов. 


Одномерный массив

Чтобы создать массив необходимо указать тип данных, поставить квадратные скобки и назвать массив. Это очень схоже с созданием обычных переменных, но здесь после типа данных идут еще квадратные скобки.


В массивах отсчет начинается с 0, поэтому первый элемент по индексу будет равен 0, второй - 1 и так далее.


Примеры создания массива:

char[] stroka = new char[2]; // Создание пустого массива
int numbers[]; // Будет считаться ошибкой

int[] nums = new int[4];
nums[0] = 1; // Добавление элементов в массив из 4 элементов

int[] nums2 = new int[] { 1, 2, 3, 5 }; // Присвоение всех значений сразу

Работать с элементами массива можно точно как с переменными. Мы можем их выводить или же устанавливать для них новые значения.


Для массивов существует несколько дополнительных методов, что позволяют проводить действия над массивом. Рассмотрим несколько из них: 

  • Length - возвращает количество элементов в массиве. К примеру, создадим массив arr и укажем для него 3 элемента. При вызове функции будет выдано число 3: arr.Length;
  • Arrays.Clear - очищает массив и устанавливает в качестве новых значений параметр. Пример:
int[] arr = new int[] { 1, 2, 3, 5 };
Array.Clear(arr, 0, arr.Length); // Установит повсюду 0
Console.Write(arr[1]); // Выведет значение 0
  • Arrays.CopyTo - копирует один массив в другой. Пример:
int[] arr = new int[] { 1, 2, 3, 5 }; // Основной массив
int[] newOne = new int [4]; // Новый массив
arr.CopyTo(newOne, 0); // Копирование начиная с элемента под индексом 0
Console.Write(newOne[2]); // Выведет 3


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

Многомерный массив – массив, в котором каждый элемент является другим массивом. На практике очень редко используются массивы с более чем третим уровнем вложенности. То есть массивы, в которых все элементы являются другими массивами и в котором все элементы также другие массивы.


Мы не будем изучать подобные массивы, так как принцип их построения точно такой же как при работе с двумерными массивами.


Для создания двумерных массивов необходимо использовать двойные квадратные скобки после типа данных. Выглядит такой массив как матрица, а записывается следующим образом:

int[,] x = { { 0, 34, 2 }, { 3, 4, 5 } };
Console.Write(x[0, 1]); // Выведет 34

// Можно их сразу не присваивать
char [,] symbols = new char[5,5];
symbols [0, 1] = 'A';

Мы видим, что элементы первого массива являются другими массивами. Чтобы выбрать какой-либо объект используйте ту же структуру что и для одномерных массивов, вот только теперь указывайте индекс как первого массива, так и второго:

x[0, 1] = 1; // Вместо 34 теперь будет 1

Исходный код

Весь код будет доступен после подписки на проект!

Задание к уроку

Необходимо оформить подписку на проект, чтобы получить доступ ко всем домашним заданиям

Большое задание по курсу

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

Также стоит посмотреть

Изучение C# WPF на практике. Создание программ на C#
10 уроков
Программа на C# .NET Windows Forms
7 уроков
Разработка 2D игры на C# WinForms
8 уроков
Изучение C# и создание Windows программ
Уроки Unity C# для начинающих
11 уроков
Xamarin Forms / Мобильные приложения на C#
10 уроков
Комментарии (2)
Добавить комментарий

Семёню. 27 мая 2023 в 17:54

пытался вывести двухмерный массив и использовал в двух циклах Length и он выводил только первый массив массива. в интернете нашёл что используют GetLength(0) в первом цикле и GetLength(1) во втором. Подскажите чем отличяется GetLength от Length?
Ответить

JanCover 02 июня 2022 в 11:01

Здравствуйте.
У меня проблема возникла.
Я бы хотел вводить данные в массив до тех пор, пока пользователь сам не остановит ввод. То есть длина массива не задана изначально и она будет известна по окончанию ввода элементов.
Однако после ввода второго элемента выдаёт ошибку.

using System;

namespace Programs
{

class Project
{

static void Main()
{

string end = "End";
short dlinMas = 0;
short[] mas = new short[dlinMas];

Console.WriteLine("Вводите числа в массив, по окончанию введите End!");

while (true)
{
if (Console.ReadLine() == end)
break;

mas[dlinMas] = Convert.ToInt16(Console.ReadLine());
dlinMas++;
}
Console.WriteLine(mas);
}
}
}
Ответить

JanCover 02 июня 2022 в 12:20

Разобрался сам, просите за беспокойство.