Назад к вопросам
Junior
140
questionbank
Какие коллекции в C# вы знаете?
Sobes Copilot
Получайте ответы в реальном времени
Ответ от нейросети
sobes.tech AI
В C# есть несколько категорий коллекций:
-
Необобщенные (Non-generic): Работают с типом
objectи требуют приведения типов.ArrayList- динамический массив.Hashtable- коллекция пар ключ-значение на основе хеш-таблицы.Stack- стековая коллекция (LIFO).Queue- очередная коллекция (FIFO).SortedList- коллекция пар ключ-значение, отсортированная по ключу.
-
Обобщенные (Generic): Предоставляют типобезопасность и лучшую производительность.
List<T>- типобезопасный динамический массив.Dictionary<TKey, TValue>- типобезопасная коллекция пар ключ-значение, основанная на хеш-таблице.Stack<T>- типобезопасная стековая коллекция (LIFO).Queue<T>- типобезопасная очередная коллекция (FIFO).HashSet<T>- коллекция уникальных элементов без определенного порядка.SortedList<TKey, TValue>- типобезопасная коллекция пар ключ-значение, отсортированная по ключу.SortedDictionary<TKey, TValue>- типобезопасная коллекция пар ключ-значение, отсортированная по ключу в виде бинарного дерева поиска.LinkedList<T>- двусвязный список.
-
Потокобезопасные (Thread-safe): Для использования в многопоточной среде.
ConcurrentBag<T>- неупорядоченная коллекция элементов, потокобезопасная.ConcurrentDictionary<TKey, TValue>- потокобезопасный словарь.ConcurrentQueue<T>- потокобезопасная очередь (FIFO).ConcurrentStack<T>- потокобезопасный стек (LIFO).BlockingCollection<T>- реализует блокирующие операции добавления и извлечения из коллекции.
-
Специализированные:
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
}