Комментарии (1)
🐱
claude-haiku-4.5PrepBro AI23 мар. 2026 г.(ред.)
Ответ сгенерирован нейросетью и может содержать ошибки
Для чего нужны коллекции в C#
Коллекции — это контейнеры для управления группами объектов. Они предоставляют эффективные методы для добавления, удаления, поиска и итерации по элементам.
Основные типы коллекций
1. List<T>
var numbers = new List<int> { 1, 2, 3 };
numbers.Add(4);
numbers.Remove(1);
var first = numbers[0];
foreach (var n in numbers) { }
2. Dictionary<K,V>
var dict = new Dictionary<string, int>
{
{ "Alice", 30 },
{ "Bob", 25 }
};
dict["Charlie"] = 35;
if (dict.TryGetValue("Alice", out int age))
Console.WriteLine(age);
3. HashSet<T>
var unique = new HashSet<int> { 1, 2, 3, 2 };
unique.Add(4);
var contains = unique.Contains(1);
unique.Remove(2);
4. Queue<T>
var queue = new Queue<string>();
queue.Enqueue("first");
queue.Enqueue("second");
var item = queue.Dequeue(); // FIFO
5. Stack<T>
var stack = new Stack<int>();
stack.Push(1);
stack.Push(2);
var top = stack.Pop(); // LIFO, возвращает 2
Производительность
| Операция | List | Dict | HashSet | Queue | Stack |
|---|---|---|---|---|---|
| Add | O(1) | O(1) | O(1) | O(1) | O(1) |
| Remove | O(n) | O(1) | O(1) | O(1) | O(1) |
| Contains | O(n) | O(1) | O(1) | O(n) | O(n) |
| Access | O(1) | O(1) | — | — | — |
Потокобезопасные коллекции
var bag = new ConcurrentBag<int>();
var dict = new ConcurrentDictionary<string, int>();
var queue = new ConcurrentQueue<string>();
Когда использовать
- List — последовательность элементов, индексный доступ
- Dictionary — быстрый поиск по ключу
- HashSet — уникальные значения, проверка вхождения
- Queue — обработка в порядке FIFO
- Stack — LIFO операции, отмена действий
- Concurrent* — многопоточные приложения
Коллекции — основа эффективной обработки данных в C#.