В классеStackопределяется ряд собственных методов, помимо тех, что уже объявлены в интерфейсах, которые в нем реализуются, а также в интерфейсеICollection.Некоторые из наиболее часто используемых методов этого класса перечислены в табл. 25.20. Как и в классеStack,эти методы обычно применяются следующим образом.Длятого чтобы поместить объект на вершине стека, вызывается методPush. А для того чтобы извлечь и удалить объект из вершины стека, вызывается методPop . Если же объект требуется только извлечь, но не удалить из вершины стека, то вызывается методРеек. А если вызвать методPop илиРеек, когда вызывающий стек пуст, то сгенерируется исключениеInvalidOperationException.
Таблица 25.20. Методы, определенные в классе Stack
Метод
Описание
public
T Peek
Возвращает элемент, находящийся на вершине стека, но не удаляет его
public
T Pop
Возвращает элемент, находящийся на вершине стека, удаляя его в процессе работы
public
void Push(Titem)
Помещает элемент i tern в стек
public
T[] ToArrayO
Возвращает массив, содержащий копии элементов вызывающего стека
public
void TrimExcessO
Сокращает избыточную емкость вызывающей коллекции в виде стека
В приведенном ниже примере программы демонстрируется применение классаStack.
// Продемонстрировать применение класса Stack. using System;
using System.Collections.Generic;
class GenStackDemo { static void Main {
Stack st = new Stack;
st.Push("один"); st.Push("два"); st.Push("три"); st.Push("четыре"); st.Push("пять");
while(st.Count > 0) { string str = st.Pop;
Console.Write(str + " ");
}
Console.WriteLine ; '
}
}
При выполнении этой программы получается следующий результат.
пять четыре три два один
Класс Queue
КлассQueueявляется обобщенным эквивалентом класса необобщенной коллекцииQueue.В нем поддерживается очередь в виде списка, действующего по принципу "первым пришел — первым обслужен". В этом классе реализуются интерфейсыICollection, IEnumerableиIEnumerable.Кроме того, в классеQueueнепосредственно реализуются методыClear, Contains иCopyTo, определенные в интерфейсеICollection.А методыAdd иRemove в этом классе не поддерживаются, как, впрочем, и свойствоIsReadOnly.Коллекция классаQueueимеет динамический характер, расширяясь по мере необходимости, чтобы вместить все элементы, которые должны храниться в ней. В классеQueueопределяются следующие конструкторы.
public Queue
public Queue(intcapacity)
public Queue(IEnumerablecollection)