Назад к вопросам
Junior
140
questionbank

Какие коллекции в C# вы знаете?

Sobes Copilot

Получайте ответы в реальном времени

Ответ от нейросети

sobes.tech AI

В C# есть несколько категорий коллекций:

  1. Необобщенные (Non-generic): Работают с типом object и требуют приведения типов.

    • ArrayList - динамический массив.
    • Hashtable - коллекция пар ключ-значение на основе хеш-таблицы.
    • Stack - стековая коллекция (LIFO).
    • Queue - очередная коллекция (FIFO).
    • SortedList - коллекция пар ключ-значение, отсортированная по ключу.
  2. Обобщенные (Generic): Предоставляют типобезопасность и лучшую производительность.

    • List<T> - типобезопасный динамический массив.
    • Dictionary<TKey, TValue> - типобезопасная коллекция пар ключ-значение, основанная на хеш-таблице.
    • Stack<T> - типобезопасная стековая коллекция (LIFO).
    • Queue<T> - типобезопасная очередная коллекция (FIFO).
    • HashSet<T> - коллекция уникальных элементов без определенного порядка.
    • SortedList<TKey, TValue> - типобезопасная коллекция пар ключ-значение, отсортированная по ключу.
    • SortedDictionary<TKey, TValue> - типобезопасная коллекция пар ключ-значение, отсортированная по ключу в виде бинарного дерева поиска.
    • LinkedList<T> - двусвязный список.
  3. Потокобезопасные (Thread-safe): Для использования в многопоточной среде.

    • ConcurrentBag<T> - неупорядоченная коллекция элементов, потокобезопасная.
    • ConcurrentDictionary<TKey, TValue> - потокобезопасный словарь.
    • ConcurrentQueue<T> - потокобезопасная очередь (FIFO).
    • ConcurrentStack<T> - потокобезопасный стек (LIFO).
    • BlockingCollection<T> - реализует блокирующие операции добавления и извлечения из коллекции.
  4. Специализированные:

    • ObservableCollection<T> - коллекция, которая уведомляет об изменениях (для привязки данных).
    • BitArray - компактное представление битов.
    • NameValueCollection - коллекция пар ключ-значение, ключи не являются уникальными.

И большинство из них реализуют различные интерфейсы, такие как IEnumerable, ICollection, IList, IDictionary.

Пример использования List<T>:

// Создание списка строк
 imparted from
 using System.Collections.Generic;

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

 // Добавление элементов
 names.Add("Alice");
 names.Add("Bob");
 names.Add("Charlie");

 // Доступ к элементу
 string firstPerson = names[0]; // Alice

 // Удаление элемента
 names.Remove("Bob");

 // Итерация по списку
 foreach (string name in names)
 {
     // Do something with name
 }

Пример использования Dictionary<TKey, TValue>:

// Создание словаря
provided from
using System.Collections.Generic;

Dictionary<int, string> students = new Dictionary<int, string>();

// Добавление элементов
students.Add(101, "Alice");
students.Add(102, "Bob");

// Доступ к элементу по ключу
string studentName = students[101]; // Alice

// Проверка наличия ключа
if (students.ContainsKey(103))
{
    // Key exists
}

// Итерация по словарю
foreach (KeyValuePair<int, string> student in students)
{
    // Access student.Key and student.Value
}