Книга: ЯЗЫК ПРОГРАММИРОВАНИЯ С# 2005 И ПЛАТФОРМА .NET 2.0. 3-е издание
Работа с типом Queue
Работа с типом Queue
Тип Queue (очередь) – это контейнер, гарантирующий размещение элементов по правилу "первым прибыл – первым обслужен". К сожалению, люди сталкиваются с очередями повсеместно: очереди в банке, кинотеатре, по утрам к автомату, продающему кофе, и т.д. При моделировании сценариев, в которых элементы обрабатываются по правилу очереди, на помощь приходит System.Collections.Queue. Вдобавок к функциональным возможностям, обеспечиваемым поддерживаемыми интерфейсами, Queue определяет ряд членов, описанных в табл. 7.4.
Таблица 7.4. Члены типа Queue
Член | Описание |
---|---|
Dequeue() | Возвращает объект, находящийся в начале Queue, с одновременным его удалением |
Enqueue() | Добавляет объект в конец Queue |
Peek() | Возвращает объект, находящийся в начале Queue, без его удаления |
Чтобы проиллюстрировать возможности этих методов, снова используем нашу автомобильную тему и построим объект Queue, моделирующий очередь автомобилей перед въездом на мойку. Во-первых, предположим, что у нас есть следующий вспомогательный статический метод.
public static void WashCar(Car с) {
Console.WriteLine("Моется {0}", с.petName);
}
Теперь рассмотрим следующий программный код.
static void Main(string[] args) {
…
// Создание очереди с тремя элементами.
Queue carWashQ = new Queue();
carWashQ.Enqueue(new Car ("Первая", 0, 1));
carWashQ.Enqueue(new Car("Вторая", 0, 2));
carWashQ.Enqueue(new Car("Третья", 0, 3));
// Первая машина в очереди.
Console.WriteLine("Первой в очереди является {0}", ((Сar)сarWashQ.Peek()).petName);
// Удаление всех элементов из очереди.
WashCar((Car)carWashQ.Dequeue());
WashCar((Car)carWashQ.Dequeue());
WashCar((Car)carWashQ.Dequeue());
// Попытаемся удалить снова?
try {WashCar((Car)carWashQ.Dequeue());}
catch(Exception е) { Console.WriteLine("Ошибка: {0}", e.Message);}
}
Здесь в тип Queue с помощью метода Enqueue() вставляются три элемента. Вызов Реек() позволяет проверить, (но не удалить) первый элемент в текущем состоянии Queue, и таким элементом в данном случае является машина с именем Первая. Наконец, с помощью Dequeue() элемент из очереди удаляется и посылается во вспомогательную функцию WashСar() для обработки. Обратите внимание на то, что при попытке удаления элемента из пустой очереди среда выполнения генерирует исключение.
- Классы из пространства имен System.Collections
- Практическая работа 53. Запуск Access. Работа с объектами базы данных
- Лекция 15. Работа с базами данных
- Работа с ресурсами локальной сети
- Эффективная работа с временными файлами сортировки
- Ускоренная работа с индексами
- HR-брендинг: Работа с поколением Y, новые инструменты для коммуникации, развитие корпоративной культуры и еще 9 эффектив...
- Безопасная работа с внешними таблицами
- Работа со строками
- 9.2. Работа прокси-сервера
- 3. Заработок для фотографов: заработать на фото – сайты фотобанков
- Работа с активным документом