// Продемонстрировать применение класса обобщенной
// коллекции SortedList
using System;
using System.Collections.Generic;
class GenSLDemo {
static void Main() {
// Создать коллекцию в виде отсортированного списка
// для хранения имен и фамилий работников и их зарплаты.
SortedList
new SortedList
// Добавить элементы в коллекцию,
sl.Add("Батлер, Джон", 73000);
sl.Add("Шварц, Capa", 59000);
sl.Add("Пайк, Томас", 45000);
sl.Add("Фрэнк, Эд", 99000);
// Получить коллекцию ключей, т.е. фамилий и имен.
ICollection
// Использовать ключи для получения значений, т.е. зарплаты,
foreach(string str in с)
Console.WriteLine("{0}, зарплата: {1:C}", str, sl[str]);
Console.WriteLine();
}
}
Ниже приведен результат выполнения этой программы.
Батлер, Джон, зарплата: $73,000.00
Пайк, Томас, зарплата: $45,000.00
Фрэнк, Эд, зарплата: $99,000.00
Шварц, Сара, зарплата: $59,000.00
Как видите, список работников и их зарплаты отсортированы по ключу, в качестве которого в данном случае служит фамилия и имя работника.
Класс Stack
является обобщенным эквивалентом класса необобщенной коллекции Stack
. В нем поддерживается стек в виде списка, действующего по принципу "первым пришел — последним обслужен". В этом классе реализуются интерфейсы Collection, IEnumerable
и IEnumerable
. Кроме того, в классе Stack
непосредственно реализуются методы Clear(),Contains()
и СоруТо()
, определенные в интерфейсе ICollection
. А методы Add()
и Remove()
в этом классе не поддерживаются, как, впрочем, и свойство IsReadOnly
. Коллекция класса Stack
имеет динамический характер, расширяясь по мере необходимости, чтобы вместить все элементы, которые должны в ней храниться. В классе Stack
определяются следующие конструкторы.
public Stack()
public Stack(int capacity)
public Stack(IEnumerable
В первой форме конструктора создается пустой стек с выбираемой по умолчанию первоначальной емкостью, а во второй форме — пустой стек, первоначальный размер которого определяет параметр
В классе Stack
определяется ряд собственных методов, помимо тех, что уже объявлены в интерфейсах, которые в нем реализуются, а также в интерфейсе ICollection
. Некоторые из наиболее часто используемых методов этого класса перечислены в табл.25.20. Как и в классе Stack
, эти методы обычно применяются следующим образом. Push()
. А для того чтобы извлечь и удалить объект из вершины стека, вызывается метод Pop()
. Если же объект требуется только извлечь, но не удалить из вершины стека, то вызывается метод Реек()
. А если вызвать метод Pop()
или Реек()
, когда вызывающий стек пуст, то сгенерируется исключение InvalidOperationException
.
Таблица 25.20. Методы, определенные в классе Stack
Метод - Описание
public T Peek() - Возвращает элемент, находящийся на вершине стека, но не удаляет его
public T Pop() - Возвращает элемент, находящийся на вершине стека, удаляя его в процессе работы
public void Push(T
Public T[] ToArray() - Возвращает массив, содержащий копии элементов вызывающего стека
public void TrimExcess() - Сокращает избыточную емкость вызывающей коллекции в виде стека
В приведенном ниже примере программы демонстрируется применение класса Stack
// Продемонстрировать применение класса Stack
using System;
using System.Collections.Generic;
class GenStackDemo {
static void Main() {
Stack
st.Push("один");
st.Push("два");