Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Методичка - Основи Програмування C_.doc
Скачиваний:
46
Добавлен:
18.12.2018
Размер:
1.44 Mб
Скачать

Структуровані типи даних (колекції) в мові c#

1. Основні структури даних та їх призначення

Часто виникає програмна необхідність у певній структуризації інформації та організації методів доступу до таких структур даних. Програміст, наприклад, може мати справу із переліком назв деяких товарів, або з більш складними наборами даних. Використання масивів в цьому випадку може бути зручним підходом, проте, по-перше, звертання до елементу за індексом не завжди зручне (наприклад, товари треба вибирати за ціною), по-друге масиви мають один дуже суттєвий недолік – їх розмір фіксований і у випадках, коли кількість елементів наперед невідома, необхідно створювати масив іншого розміру перед зміною кількості елементів. Таку операцію можна виконувати наступним чином:

using System;

namespace LabDemo

{

class Program

{

static void Main(string[] args)

{

const int NEWSIZE = 10; // кількість елементів

int[] arr1 = { 1, 2, 3, 4, 5 };

// створюємо та ініціалізуємо новий масив

int[] arr2 = new int[NEWSIZE];

for (int i = 0; i < arr1.Length; i++)

{ arr2[i] = arr1[i]; }

}

}

}

За допомогою вбудованого статичного методу Copy() класу System.Array зробити все набагато простіше та правильніше, як показано у наступному прикладі. Параметри методу Copy()наступні: вихідний масив; індекс вихідного масиву, з якого починається копіювання; масив, у який відбувається копіювання; індекс масиву-призначення у який відбудеться копіювання та кількість елементів для копіювання.

using System;

namespace LabDemo

{

class Program

{

static void Main(string[] args)

{

const int NEWSIZE = 10; // кількість елементів

int[] arr1 = { 1, 2, 3, 4, 5 };

// створюємо та ініціалізуємо новий масив

int[] arr2 = new int[NEWSIZE];

// копіюємо arr1.Length елементів масиву arr1 у масив

// arr2, починаючи з індексу 0

Array.Copy(arr1, 0, arr2, 0, arr1.Length);

}

}

}

Отже масив є найпростішою уже знайомою нам структурою даних. Крім масивів для організації різноманітних структур інформації в мові C# існують спеціальні класи об’єктів, що спрощують роботу із структурами даних зі змінною кількістю елементів. Для таких структур даних використовується термін «колекція» - це набір об’єктів, всі елементів якого можуть бути перебрані по черзі. Для ідентифікації кожного елементу використовується унікальне значення деякого ключа – у найпростішому випадку це може бути просто ціле число, власне, аналог індексу у масиві. Існують два основних підходи до організації структур даних: коли всі дані є довільними об’єктами (мають тип object – такі класи з’явились в .NET версії 1.1) та коли дані є типізованими (узагальнені колекції (Generic), що з’явились їм на зміну в версії .NET 2.0).

Нижче будуть розглянуті 4 типи структур даних:

  1. Набір даних із цілими ключами

    1. ArrayList – масив-список, елементи такої структури даних належать до типу object.

    2. List<Т> – типізований масив-список, всі елементи такої структури даних належать до типу Т.

  2. Набір даних у вигляді пар значення-ключ із нецілими ключами

    1. Hashtable – дані та ключі даних є довільними (належать до типу object)

    2. Dictionary <Т1,Т2> – дані та ключі є типізованими і належать до типів Т1 та Т2.