Коллекции в C#

Коллекции в C#

Коллекции  в  C#

В одной из предыдущих статей мы ознакомились с тем как создавать массивы в C#.
При этом, в отличие от примитивных типов данных, таких как: строки, числа, символы; массивы
делают возможным обработку группы таких объектов с заранее фиксированным количеством.
Массивы полезны для работы с коллекцией известного размера. Но часто мы не знаем, какое количество элементов нам нужно собрать и использовать. В таких ситуациях нам лучше использовать коллекции.
В сегодняшней статье мы ознакомимся с типом коллекций, а конкретнее списком в C#.

Пространство имен

Для работы с коллекциями необходимо подключить пространство имен System.Collections.Generic в начале нашего файла.


using System.Collections.Generic;

Создание списка

Наиболее распространенным типом коллекции в C# является список List с параметром T. T является заполнителем для типа; когда мы создаем объект типа List, нам нужно указать тип элементов, которые будут содержаться в списке.


// List<T> - список

List<string> names = new List<string>();

Подобно массивам, список также можно инициализировать указанием элементов.


List<int> years = new List<int> { 2020, 2019, 2018, 2017, 2016 };

// Для доступа к элементам списка используем цикл foreach

foreach(var year in years)
{
    Console.WriteLine(year.ToString());
}

// Также доступ возможен по индексу

var day = daysOfTheWeek[3]; //"Thu"

// В заключении, мы можем добавить элементы к коллекции используя метод Add() 

List<string> daysOfTheWeek = new List<string> ();
daysOfTheWeek.Add("Sun");
daysOfTheWeek.Add("Mon");
daysOfTheWeek.Add("Tue");
daysOfTheWeek.Add("Wed");
daysOfTheWeek.Add("Thu");
daysOfTheWeek.Add("Fri");
daysOfTheWeek.Add("Sat");

Методы списков.

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


// мы можем создать список а затем инициализировать его

List<string> names = new List<string>();

names.Add("test name"); 
names.Add("second name");
names.Add("third name");

// проверяем находится ли значение в списке
bool exists = names.Contains("test name");  
Console.WriteLine(exists);

// True

// возвращает копию списка с элементами из диапазона 
List<string> aFewNames = names.GetRange(0, 2); 

// вставляем новую строку в позицию 2
names.Insert(2, "second and a half name"); 

// возвращает индекс элемента в списке
int index = names.IndexOf("test name"); 
Console.WriteLine(index);

// 0

// удаляет первый подходящий элемент
names.Remove("test name"); 

// полностью очищает список
names.Clear();  

Объединение списков

В C# можно объединить списки одного и того же типа в один с помощью метода AddRange():


List<string> names1 = new List<string> { "C#", "F#", "Kotlin"};
List<string> names2 = new List<string> { "Python", "JavaScript"};

names1.AddRange(names2); 

foreach(var el in names1)
{
    Console.WriteLine(el.ToString());
 }

/*вывод

C#
F#
Kotlin
Python
Javascript

*/

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

Источник