В классе Queue определяется ряд собственных методов, помимо тех, что уже объявлены в интерфейсах, которые в нем реализуются. Некоторые из наиболее часто используемых методов этого класса перечислены в табл. 25.8. Эти методы обычно применяются следующим образом. Для того чтобы поместить объект в очередь, вызывается метод Enqueue()
Dequeue()
. Если же требуется извлечь, но не удалять следующий объект из очереди, то вызывается метод Реек()
. А если методы Dequeue()
и Реек()
вызываются, когда очередь пуста, то генерируется исключение InvalidOperationException
.Таблица 25.8. Наиболее часто используемые методы, определенные в классе Queue
Метод -
Описаниеpublic virtual void Clear() -
Устанавливает свойство Count равным нулю, очищая, по существу, очередьpublic virtual bool Contains(object obj) -
Возвращает логическое значение true, если объект obj содержится в вызывающей очереди, а иначе — логическое значение falsepublic virtual object Dequeue() -
Возвращает объект из начала вызывающей очереди. Возвращаемый объект удаляется из очередиpublic virtual void Enqueue(object obj) -
Добавляет объект obj в конец очередиpublic virtual object Peek() -
Возвращает объект из начала вызывающей очереди, но не удаляет егоpublic static Queue Synchronized(Queue
public virtual object[] ToArray() -
Возвращает массив, который содержит копии элементов из вызывающей очередиpublic virtual void TrimToSize() -
Устанавливает значение свойства Capacity равным значению свойства CountВ приведенном ниже примере программы демонстрируется применение класса
Queue.
// Продемонстрировать применение класса Queue.
using System;
using System.Collections;
class QueueDemo {
static void ShowEnq(Queue q, int a) {
q.Enqueue(a) ;
Console.WriteLine("Поместить в очередь: Enqueue(" + a + ")");
Console.Write("Содержимое очереди: ");
foreach(int i in q)
Console.Write(i + " ");
Console.WriteLine() ;
}
static void ShowDeq(Queue q) {
Console.Write("Извлечь из очереди: Dequeue -> ");
int a = (int) q.Dequeue();
Console.WriteLine(a);
Console.Write("Содержимое очереди: ");
foreach(int i in q)
Console.Write(i + " ") ;
Console.WriteLine();
}
static void Main() {
Queue q = new Queue();
foreach(int i in q)
Console.Write(i + " ");
ShowEnq(q, 22);
ShowEnq(q, 65);
ShowEnq(q, 91);
ShowDeq(q);
ShowDeq(q);
ShowDeq(q);
try {
ShowDeq (q);
} catch (InvalidOperationException) {
Console.WriteLine("Очередь пуста.");
}
}
}
Эта программа дает следующий результат.
Поместить в очередь: Enqueue(22)
Содержимое очереди: 22
Поместить в очередь: Enqueue(65)
Содержимое очереди: 22 65
Поместить в очередь: Enqueue(91)
Содержимое очереди: 22 65 91
Извлечь из очереди: Dequeue -> 22
Содержимое очереди: 65 91
Извлечь из очереди: Dequeue -> 65
Содержимое очереди: 91
Извлечь из очереди: Dequeue -> 91
Содержимое очереди:
Извлечь из очереди: Dequeue -> Очередь пуста.
Хранение отдельных битов в классе коллекции BitArray