Масив – це набір однотипних даних, які розташовуються в пам'яті послідовно один за одним. Доступ до елементів масиву здійснюється по індексу (номеру) елемента. Масив може містити елементи будь-якого типу даних, можна навіть створювати масив масивів (ступінчастий масив). Кількість елементів у масиві називається розміром масиву. Масиви належать до посилальних типів даних. Масиви в Сі-шарп можуть бути одновимірними і багатовимірними.
Одновимірні масиви
Одновимірний масив по-іншому ще називається вектором, і доступ до його елементів використовується тільки один індекс. В Сі-шарп оголошення масиву має таку структуру:
тип[] ім'я_масива = new тип[розмір масиву];
Приклад:
int[] array = new int[5]; // створюємо масив цілих чисел
string[] seasons = new string[4] {"зима","весна","літо","осінь"}; //оголошення масиву рядків і його ініціалізація значеннями
Якщо відбувається ініціалізація, оператор new можна упускати:
string[] seasons = {"зима","весна","літо","осінь"}; //коректно
Доступ до елементів здійснюється за індексом. Слід пам'ятати, що індексація починається з нуля – перший елемент масиву має індекс 0, а останній n-1, де n – розмір масиву.
static void Main(string[] args)
{
int[] numbers = new int[5];
numbers[0] = 5;
numbers[1] = 2;
numbers[4] = 3;
numbers[5] = 2; // помилка, індекс знаходить не в масиві
}
В якості масиву можна уявити, наприклад, список студентів у групі (імена), показники температури повітря за останні кілька днів і так далі.
Багатовимірні масиви
Одним з випадків багатовимірного масиву служить двовимірний масив (array). У матриці для доступу до елементів необхідно використовувати два індексу. Кількістю індексів, які використовуються для доступу до елементів масиву називається розмірність масиву.
int[,] numbers1 = new int[2, 2]; // оголошення двовимірного масиву
int[,,] numbers2 = new int[2, 2 ,3]; // оголошення тривимірного масиву
int[,] numbers3 = new int[3, 2] { {6, 0},
{5, 7},
{8, 9} }; // ініціалізація двовимірного масиву
Елементу масиву numbers1 з координатами 1,1 присвоїмо значення 8: numbers1[1, 1] = 8; Багатовимірні масиви використовуються набагато рідше одновимірних. Наведу трохи тупий приклад даних, які можна було б представити як двовимірного масиву: Є матриця 7*4. Рядки, яких сім, будуть відповідати дням тижня, а 4 стовпця - часу дня (00:00, 06:00, 12:00, 18:00). В якості даних буде температура повітря. Значення температури з координатами 2,3 буде відповідати температурі в середу о 18:00. На практиці, звичайно, такі дані представлялися б в іншому вигляді, але для прикладу підійде.
Ступінчасті (jagged) масиви в Сі-шарп
Ступінчастий (jagged) масив – це масив масивів. У ньому довжина кожного масиву може бути різною.
Приклад оголошення ступеневого масиву:
static void Main(string[] args)
{
int[][] array = new int[3][]; // оголошуємо масив, який містить 3 масиву
array [0] = new int[3]; //створення внутрішнього масиву
array [1] = new int[2];
array [2] = new int[5];
}
Доступ до елементів здійснюється за тим же принципом, як і з багатовимірними масивами, тільки тут вже беруть участь дві пари квадратних дужок (продовження прикладу вище):
array [0][1] = 5;
array [1][1] = 8;
array [1][2] = 5; // помилка, індекс «2» поза межами масиву
Всі масиви є об'єктами і у них є деякі властивості. Самим корисним для нас буде властивість Length, яке повертає кількість елементів у масиві (у всіх розмірностях)
static void Main(string[] args)
{
int[] numbers = new int[5];
int size = numbers.Length; // size = 5
}
Клас List
Клас List служить для роботи зі списками, про що і говорить його назва. Це такий «крутий» масив. Головна відмінність від простого масиву в тому, що він динамічний ви можете вставляти та видаляти елементи в будь-який час, в той час як в простому масиві розмір вказується при створенні і зробити його більше або менше не можна.
static void Main(string[] args)
{
List teams = new List(); // створення списку
teams.Add("Barcelona"); // додавання елемента
teams.Add("Chelsea");
teams.Add("Арсенал");
List teams2 = new List() {"Dynamo", "CSKA" }; // ініціалізація
}
Додавання елементів
Для додавання елементів в список в ньому реалізовано кілька методів:
Метод | Опис |
---|---|
Add([елемент]) | додає елемент в кінець списку |
AddRange([список]) | додає в кінець списку елементи зазначеного списку |
Insert([індекс],[елемент]) | вставляє елемент на позицію відповідну індексу, всі елементи «правіше» будуть зрушені на одну позицію |
InsertRange([індекс], [список]) | те ж саме, тільки вставляється безліч елементів |
Видалення елементів
Метод | Опис |
---|---|
Remove([елемент]) | видаляє перше входження елемента зі списку |
RemoveRange([індекс], [кількість]) | видаляє вказана кількість елементів, починаючи з вказаної позиції |
RemoveAt([індекс]) | видаляє елемент, який знаходиться на зазначеній позиції |
Clear() | видаляє всі елементи списку |
Властивість Count відповідає властивості звичайного масиву – Length – кількість елементів.
static void Main(string[] args)
{
List teams = new List() { "Inter", "Milan", "Bayern", "Juventus"};
teams.Insert(2,"Barcelona"); // вставляємо в списку елемент "Barcelona" на позицію 2
teams.Remove("Milan"); // видаляємо перше входження елемента "Milan" зі списку
List newTeams = new List() { "Liverpool", "Roma", "Borussia", "Valencia" };
teams.AddRange(newTeams); // додаємо в кінець списку елементи списку newTeams
}
Варто пам'ятати, що прості масиви працюють швидше, ніж списки List. Якщо у вашій програмі не особливо важлива продуктивність і ви не працюєте з великими кількостями даних, то зручніше використовувати список, в іншому випадку потрібно використовувати прості масиви.
Автор Swytos << попередня • наступна >> До змісту