Масив – це набір однотипних даних, які розташовуються в пам'яті послідовно один за одним. Доступ до елементів масиву здійснюється по індексу (номеру) елемента. Масив може містити елементи будь-якого типу даних, можна навіть створювати масив масивів (ступінчастий масив). Кількість елементів у масиві називається розміром масиву. Масиви належать до посилальних типів даних. Масиви в Сі-шарп можуть бути одновимірними і багатовимірними.

Одновимірні масиви

Одновимірний масив по-іншому ще називається вектором, і доступ до його елементів використовується тільки один індекс. В Сі-шарп оголошення масиву має таку структуру:
тип[] ім'я_масива = 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                                              << попереднянаступна >>                                                 До змісту


2016-05-29 • Просмотров [ 114 ]