Очереди в C#: Enqueue, Dequeue и операции First-In-First-Out
Что такое очередь (Queue) в C#?
Очередь (Queue) реализует принцип First-In-First-Out (FIFO), подобно очереди людей за автобусом. Первый добавленный элемент — первый, который обрабатывается или удаляется.
В C# очереди определены в пространстве имён System.Collections и предлагают методы Enqueue и Dequeue, отражающие поведение реальных очередей.
Объявление очереди
Инстанцируйте очередь с типом Queue и ключевым словом new:
Queue qt = new Queue();
Добавление элементов (Enqueue)
Используйте Enqueue для добавления элемента в конец очереди:
qt.Enqueue(1);
Удаление элементов (Dequeue)
Метод Dequeue удаляет и возвращает элемент из начала очереди:
var first = qt.Dequeue();
Полезные свойства и методы
- Count — возвращает количество хранящихся элементов.
int total = qt.Count;
- Contains — проверяет, существует ли конкретное значение в очереди.
bool hasThree = qt.Contains(3);
Практический пример
Следующее консольное приложение демонстрирует создание очереди, итерацию и использование Count и Contains:
using System;
using System.Collections;
namespace DemoApplication {
class Program {
static void Main(string[] args) {
Queue qt = new Queue();
qt.Enqueue(1);
qt.Enqueue(2);
qt.Enqueue(3);
foreach (Object obj in qt) {
Console.WriteLine(obj);
}
Console.WriteLine();
Console.WriteLine("Total items: " + qt.Count);
Console.WriteLine("Contains 3? " + qt.Contains(3));
Console.ReadKey();
}
}
}
Вывод:
Удаление первого элемента
Вызов Dequeue удаляет самый ранний добавленный элемент. Следующий фрагмент показывает эффект:
qt.Dequeue();
foreach (Object obj in qt) {
Console.WriteLine(obj);
}
Результат:
Резюме
Очередь C# следует семантике FIFO. Используйте Enqueue для добавления, Dequeue для удаления первого элемента, а свойства вроде Count и методы вроде Contains для инспекции очереди.
Язык C
- Выражения, операторы и блоки в C#: подробное руководство с примерами
- Программное обеспечение для профилактического обслуживания: функции, преимущества и руководство по внедрен…
- Кривая P-F разъяснена: Мастерство надежностно-ориентированного обслуживания
- Аварийное обслуживание: быстрая реакция и контроль затрат
- Освоение String.compareTo() в Java: синтаксис, сценарии использования и примеры
- Исследование 6G: будущее ультрабыстрой связи
- Лужение меди: Техники и советы для прочных, надежных соединений
- MQTT в промышленной автоматизации: практическое руководство для производителей
- Микроконтроллеры PIC18: особенности, производительность и руководство по использованию
- Понимание референс-десигнаторов: как маркировать соединения сборки ПП