Читать «C# 4.0: полное руководство» онлайн - страница 626
Герберт Шилдт
// для хранения имен и фамилий работников и их зарплаты.
SortedList<string, double> sl =
new SortedList<string, double>();
// Добавить элементы в коллекцию,
sl.Add("Батлер, Джон", 73000);
sl.Add("Шварц, Capa", 59000);
sl.Add("Пайк, Томас", 45000);
sl.Add("Фрэнк, Эд", 99000);
// Получить коллекцию ключей, т.е. фамилий и имен.
ICollection<string> с = sl.Keys;
// Использовать ключи для получения значений, т.е. зарплаты,
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<T>
Класс Stack<T>
является обобщенным эквивалентом класса необобщенной коллекции Stack
. В нем поддерживается стек в виде списка, действующего по принципу "первым пришел — последним обслужен". В этом классе реализуются интерфейсы Collection, IEnumerable
и IEnumerable<T>
. Кроме того, в классе Stack<T>
непосредственно реализуются методы Clear(),Contains()
и СоруТо()
, определенные в интерфейсе ICollection<T>
. А методы Add()
и Remove()
в этом классе не поддерживаются, как, впрочем, и свойство IsReadOnly
. Коллекция класса Stack<T>
имеет динамический характер, расширяясь по мере необходимости, чтобы вместить все элементы, которые должны в ней храниться. В классе Stack<T>
определяются следующие конструкторы.
public Stack()
public Stack(int capacity)
public Stack(IEnumerable<T> collection)
В первой форме конструктора создается пустой стек с выбираемой по умолчанию первоначальной емкостью, а во второй форме — пустой стек, первоначальный размер которого определяет параметр
В классе Stack<T>
определяется ряд собственных методов, помимо тех, что уже объявлены в интерфейсах, которые в нем реализуются, а также в интерфейсе ICollection<T>
. Некоторые из наиболее часто используемых методов этого класса перечислены в табл.25.20. Как и в классе Stack
, эти методы обычно применяются следующим образом. Push()
. А для того чтобы извлечь и удалить объект из вершины стека, вызывается метод Pop()
. Если же объект требуется только извлечь, но не удалить из вершины стека, то вызывается метод Реек()
. А если вызвать метод Pop()
или Реек()
, когда вызывающий стек пуст, то сгенерируется исключение InvalidOperationException
.
Таблица 25.20. Методы, определенные в классе Stack<T>
Метод - Описание
public T Peek() - Возвращает элемент, находящийся на вершине стека, но не удаляет его