Здесь в тип Queue с помощью метода Enqueue() вставляются три элемента. Вызов Реек() позволяет проверить, (но не удалить) первый элемент в текущем состоянии Queue, и таким элементом в данном случае является машина с именем Первая. Наконец, с помощью Dequeue() элемент из очереди удаляется и посылается во вспомогательную функцию WashСar() для обработки. Обратите внимание на то, что при попытке удаления элемента из пустой очереди среда выполнения генерирует исключение.

<p>Работа с типом Stack</p>

Тип System.Collections.Stack представляет коллекцию, в которой элементы размещаются по правилу "последним прибыл – первым обслужен". Как и следует ожидать, Stack определяет члены с именами Push() и Pop() (для добавления элементов в стек и удаления их из стека). В следующем примере стека используется стандартный тип System.String.

static void Main(string[] args) {

 …

 Stack stringStack = new Stack();

 stringStack.Push("Первый");

 stringStack.Push("Второй");

 stringStack.Push("Третий");

 // Смотрим на первый элемент, удаляем его и смотрим снова.

 Console.WriteLine("Первый элемент: {0}", stringStack.Peek());

 Console.WriteLine("Удален {0}", stringStack.Pop());

 Console.WriteLine("Первый элемент: {0}", stringStack.Peek());

 Console.WriteLine("Удален {0}", stringStack.Pop());

 Console.WriteLine("Первый элемент: {0}", stringStack.Peek());

 Console.WriteLine("Удален {0}", stringStack.Pop());

 try {

  Console.WriteLine("Первый элемент: {0}", stringStack.Peek());

  Console.WriteLine ("Удален {0}", stringStack.Pop());

 } catch(Exception e) {Console.WriteLine("Ошибка: {0}", e.Message);}

}

Здесь строится стек, содержащий три строковых типа (названных в соответствии с порядком их вставки). "Заглядывая" в стек, вы видите элемент, находящийся на вершине стека, поэтому первый вызов Peek() выявляет третью строку. После серии вызовов Pop() и Peek() стек, в конечном счете, опустошается, и тогда дополнительный вызов Peek()/Pop() приводит к генерированию системного исключения.

Исходный код. Проект CollectionTypes размещен в подкаталоге, соответствующем главе 7.

<p>Пространство имен System.Collections.Specialized</p>

Кроме типов, определенных в пространстве имен System.Collections, библиотеки базовых классов .NET предлагают набор более специализированных типов, определенных в пространстве имен System.Collections.Specialized. Например, типы StringDictionary и ListDictionary обеспечивают "стилизованную" реализацию интерфейса IDictionary. Описания основных типов класса из этого пространства имен предлагаются в табл. 7.5.

Таблица 7.5. Типы пространства имен System.Collections.Specialized.

Тип Описание
CollectionsUtil Создает коллекции, игнорирующие регистр символов в строках
HybridDictionary Реализует IDictionary, используя ListDictionary, пока коллекция мала, и переключаясь на Hashtable, когда коллекция становится большой
ListDictionary Реализует IDictionary, используя однонаправленный список. Рекомендуется для коллекций, которые содержат не более десятка элементов
NameValueCollection Представляет отсортированную коллекцию связанных ключей и значений типа String, которые могут быть доступны или по ключу, или по индексу
StringCollection Представляет коллекцию строк
StringDictionary Реализует Hashtable с ключом, строго типизированным, как строка, а не объект
StringEnumerator Поддерживает простой цикл по элементам StringCollection 
<p>Резюме</p>
Перейти на страницу:

Похожие книги