Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Вивчайте Що Таке Списки? | Структури Даних та Робота з Файлами
C# Понад Базовий Рівень

bookЩо Таке Списки?

Prerequisites
Передумови

Уявімо ситуацію, коли потрібно зберегти імена всіх студентів, які проходять певний курс. Перше рішення, яке спадає на думку, — створити масив:

index.cs

index.cs

copy
123456
using System; class Program { string[] studentNames = new string[50]; }

Однак, якщо в якийсь момент кількість студентів перевищить 50, ми не зможемо зберегти їхні імена. Аналогічно, якщо студентів менше 50, невикористані місця в масиві призведуть до марної витрати пам'яті — це стає проблемою, особливо у великих масивах.

У такій ситуації потрібна нова структура, яка може зберігати змінну кількість елементів. На щастя, така структура вже існує — це Список.

Списки дуже схожі на масиви, однак кількість елементів у списку можна змінювати.

Note
Примітка

Можливо змінювати існуючі елементи в масиві, однак додавати нові записи до нього не можна.

Наведено синтаксис для оголошення порожнього списку:

За допомогою цього синтаксису можна створити список для зберігання імен студентів:

index.cs

index.cs

copy
12345678910
using System; using System.Collections.Generic; class Program { static void Main(string[] args) { List<string> students = new List<string>(); } }

Важливо зазначити, що для використання списків необхідно імпортувати модуль Generic.

index.cs

index.cs

copy
1
using System.Collections.Generic;

Потрібно лише додати цей рядок під using System;, щоб імпортувати необхідний модуль.

Метод Add()

Можна додавати елементи до списку за допомогою методу Add:

index.cs

index.cs

copy
123456789101112131415
using System; using System.Collections.Generic; class Program { static void Main(string[] args) { List<string> students = new List<string>(); students.Add("Anna"); students.Add("Laura"); students.Add("Jacob"); students.Add("Aron"); } }

Наведений вище код додасть чотири елементи до списку students.

Як і масив типу string, який може містити лише елементи типу string, список типу string також приймає лише елементи типу string.

Індексація

Першим елементом є Anna, отже, він матиме індекс 0, а Laura — індекс 1 і так далі. Елементи списку можна отримати за допомогою індексації, так само як і в масиві:

index.cs

index.cs

copy
1234567891011121314151617
using System; using System.Collections.Generic; class Program { static void Main(string[] args) { List<string> students = new List<string>(); students.Add("Anna"); students.Add("Laura"); students.Add("Jacob"); students.Add("Aron"); Console.WriteLine(students[2]); } }

Метод Count()

Можна отримати довжину списку за допомогою атрибута Count:

index.cs

index.cs

copy
123456789101112131415161718
using System; using System.Collections.Generic; class Program { static void Main(string[] args) { List<string> students = new List<string>(); students.Add("Anna"); students.Add("Laura"); students.Add("Jacob"); students.Add("Aron"); Console.WriteLine(students[2]); Console.WriteLine(students.Count); } }

Динамічна довжина

Зверніть увагу, що довжина списку є динамічною (змінною), тобто змінюється під час додавання елементів:

index.cs

index.cs

copy
1234567891011121314151617181920
using System; using System.Collections.Generic; class Program { static void Main(string[] args) { List<string> students = new List<string>(); Console.WriteLine(students.Count); students.Add("Anna"); Console.WriteLine(students.Count); students.Add("Laura"); Console.WriteLine(students.Count); students.Add("Jacob"); Console.WriteLine(students.Count); students.Add("Aron"); Console.WriteLine(students.Count); } }

Ініціалізація

Можна також ініціалізувати список з деякими елементами, використовуючи наступний синтаксис:

List<dataType> listName = new List<dataType>{ element1, element2, … };
index.cs

index.cs

copy
12345678910111213141516
using System; using System.Collections.Generic; class Program { static void Main(string[] args) { List<string> students = new List<string> { "Anna", "Laura", "Jacob", "Aron" }; // It is still possible to add additional elements after initialization students.Add("Markus"); Console.WriteLine(students.Count); Console.WriteLine(students[4]); } }

Перебір списків

Перебір елементів списку здійснюється аналогічно до масивів

Використання for-циклу

index.cs

index.cs

copy
123456789101112131415
using System; using System.Collections.Generic; class Program { static void Main(string[] args) { List<string> students = new List<string> { "Anna", "Laura", "Jacob", "Aron" }; for (int i = 0; i < students.Count; i++) { Console.WriteLine(students[i]); } } }

Використання циклу foreach

index.cs

index.cs

copy
123456789101112131415
using System; using System.Collections.Generic; class Program { static void Main(string[] args) { List<string> students = new List<string> { "Anna", "Laura", "Jacob", "Aron" }; foreach (string studentName in students) { Console.WriteLine(studentName); } } }
Note
Порада:

Щоб скоротити синтаксис оголошення, можна також використовувати неявне оголошення. Нагадаємо, що явне оголошення — це коли ми вказуємо тип даних під час оголошення змінної.

index.cs

index.cs

copy
1
float number = 7.9f;

З іншого боку, при неявному оголошенні можна просто використовувати ключове слово var, і компілятор автоматично визначає тип даних змінної відповідно до присвоєного значення:

index.cs

index.cs

copy
1
var number = 7.9f;

Можна також використовувати неявне оголошення під час створення списків:

index.cs

index.cs

copy
1
var numbers = new List<int> { 1, 2, 3, 4, 5 };

1. Яким буде результат виконання наступного коду:

2. Який модуль необхідно імпортувати для використання списків?

3. Який метод використовується для отримання розміру (довжини) списку?

question mark

Яким буде результат виконання наступного коду:

Select the correct answer

question mark

Який модуль необхідно імпортувати для використання списків?

Select the correct answer

question mark

Який метод використовується для отримання розміру (довжини) списку?

Select the correct answer

Все було зрозуміло?

Як ми можемо покращити це?

Дякуємо за ваш відгук!

Секція 1. Розділ 1

Запитати АІ

expand

Запитати АІ

ChatGPT

Запитайте про що завгодно або спробуйте одне із запропонованих запитань, щоб почати наш чат

Awesome!

Completion rate improved to 2.04

bookЩо Таке Списки?

Свайпніть щоб показати меню

Prerequisites
Передумови

Уявімо ситуацію, коли потрібно зберегти імена всіх студентів, які проходять певний курс. Перше рішення, яке спадає на думку, — створити масив:

index.cs

index.cs

copy
123456
using System; class Program { string[] studentNames = new string[50]; }

Однак, якщо в якийсь момент кількість студентів перевищить 50, ми не зможемо зберегти їхні імена. Аналогічно, якщо студентів менше 50, невикористані місця в масиві призведуть до марної витрати пам'яті — це стає проблемою, особливо у великих масивах.

У такій ситуації потрібна нова структура, яка може зберігати змінну кількість елементів. На щастя, така структура вже існує — це Список.

Списки дуже схожі на масиви, однак кількість елементів у списку можна змінювати.

Note
Примітка

Можливо змінювати існуючі елементи в масиві, однак додавати нові записи до нього не можна.

Наведено синтаксис для оголошення порожнього списку:

За допомогою цього синтаксису можна створити список для зберігання імен студентів:

index.cs

index.cs

copy
12345678910
using System; using System.Collections.Generic; class Program { static void Main(string[] args) { List<string> students = new List<string>(); } }

Важливо зазначити, що для використання списків необхідно імпортувати модуль Generic.

index.cs

index.cs

copy
1
using System.Collections.Generic;

Потрібно лише додати цей рядок під using System;, щоб імпортувати необхідний модуль.

Метод Add()

Можна додавати елементи до списку за допомогою методу Add:

index.cs

index.cs

copy
123456789101112131415
using System; using System.Collections.Generic; class Program { static void Main(string[] args) { List<string> students = new List<string>(); students.Add("Anna"); students.Add("Laura"); students.Add("Jacob"); students.Add("Aron"); } }

Наведений вище код додасть чотири елементи до списку students.

Як і масив типу string, який може містити лише елементи типу string, список типу string також приймає лише елементи типу string.

Індексація

Першим елементом є Anna, отже, він матиме індекс 0, а Laura — індекс 1 і так далі. Елементи списку можна отримати за допомогою індексації, так само як і в масиві:

index.cs

index.cs

copy
1234567891011121314151617
using System; using System.Collections.Generic; class Program { static void Main(string[] args) { List<string> students = new List<string>(); students.Add("Anna"); students.Add("Laura"); students.Add("Jacob"); students.Add("Aron"); Console.WriteLine(students[2]); } }

Метод Count()

Можна отримати довжину списку за допомогою атрибута Count:

index.cs

index.cs

copy
123456789101112131415161718
using System; using System.Collections.Generic; class Program { static void Main(string[] args) { List<string> students = new List<string>(); students.Add("Anna"); students.Add("Laura"); students.Add("Jacob"); students.Add("Aron"); Console.WriteLine(students[2]); Console.WriteLine(students.Count); } }

Динамічна довжина

Зверніть увагу, що довжина списку є динамічною (змінною), тобто змінюється під час додавання елементів:

index.cs

index.cs

copy
1234567891011121314151617181920
using System; using System.Collections.Generic; class Program { static void Main(string[] args) { List<string> students = new List<string>(); Console.WriteLine(students.Count); students.Add("Anna"); Console.WriteLine(students.Count); students.Add("Laura"); Console.WriteLine(students.Count); students.Add("Jacob"); Console.WriteLine(students.Count); students.Add("Aron"); Console.WriteLine(students.Count); } }

Ініціалізація

Можна також ініціалізувати список з деякими елементами, використовуючи наступний синтаксис:

List<dataType> listName = new List<dataType>{ element1, element2, … };
index.cs

index.cs

copy
12345678910111213141516
using System; using System.Collections.Generic; class Program { static void Main(string[] args) { List<string> students = new List<string> { "Anna", "Laura", "Jacob", "Aron" }; // It is still possible to add additional elements after initialization students.Add("Markus"); Console.WriteLine(students.Count); Console.WriteLine(students[4]); } }

Перебір списків

Перебір елементів списку здійснюється аналогічно до масивів

Використання for-циклу

index.cs

index.cs

copy
123456789101112131415
using System; using System.Collections.Generic; class Program { static void Main(string[] args) { List<string> students = new List<string> { "Anna", "Laura", "Jacob", "Aron" }; for (int i = 0; i < students.Count; i++) { Console.WriteLine(students[i]); } } }

Використання циклу foreach

index.cs

index.cs

copy
123456789101112131415
using System; using System.Collections.Generic; class Program { static void Main(string[] args) { List<string> students = new List<string> { "Anna", "Laura", "Jacob", "Aron" }; foreach (string studentName in students) { Console.WriteLine(studentName); } } }
Note
Порада:

Щоб скоротити синтаксис оголошення, можна також використовувати неявне оголошення. Нагадаємо, що явне оголошення — це коли ми вказуємо тип даних під час оголошення змінної.

index.cs

index.cs

copy
1
float number = 7.9f;

З іншого боку, при неявному оголошенні можна просто використовувати ключове слово var, і компілятор автоматично визначає тип даних змінної відповідно до присвоєного значення:

index.cs

index.cs

copy
1
var number = 7.9f;

Можна також використовувати неявне оголошення під час створення списків:

index.cs

index.cs

copy
1
var numbers = new List<int> { 1, 2, 3, 4, 5 };

1. Яким буде результат виконання наступного коду:

2. Який модуль необхідно імпортувати для використання списків?

3. Який метод використовується для отримання розміру (довжини) списку?

question mark

Яким буде результат виконання наступного коду:

Select the correct answer

question mark

Який модуль необхідно імпортувати для використання списків?

Select the correct answer

question mark

Який метод використовується для отримання розміру (довжини) списку?

Select the correct answer

Все було зрозуміло?

Як ми можемо покращити це?

Дякуємо за ваш відгук!

Секція 1. Розділ 1
some-alt