Информационный сайт

 

Реклама
bulletinsite.net -> Книги на сайте -> Программисту -> Троелсен Э. -> "С# и платформа .NET. Библиотека программиста" -> 93

С# и платформа .NET. Библиотека программиста - Троелсен Э.

Троелсен Э. С# и платформа .NET. Библиотека программиста — СПб.: Питер, 2004. — 796 c.
ISBN 5-318-00750-3
Скачать (прямая ссылка): cplatforma2004.pdf
Предыдущая << 1 .. 87 88 89 90 91 92 < 93 > 94 95 96 97 98 99 .. 320 >> Следующая

Ordering by pet папе: ё
Ь Cliuc Ьч
G Магу
L3 NoName
123 Kusty
& Uiper
Press any key to continue
zi
m r-
Рис. 4.9. Сортируем машины по прозвищу — в алфавитном порядке
Как с помощью специальных свойств сделать сортировку более удобной
В вызове того варианта перегруженного метода Array. Sorte), которым мы воспользовались выше, нет ничего сложного. Однако иногда пользователям класса бывает нелегко осознать, что для сортировки объекте», например, класса Сог(), необходимо вначале рассмотреть совсем другой класс SortByPetName и понять, для чего он нужен. Если бы для передачи методу Array. Sort О использовался какой-либо член класса Cart. 5 с подходящим названием, было бы проще. Array. Sort() предоставляет нам такую возможность — существует еще один перегруженный вариант этого метода, который принимает в качестве одного из параметров статическое свойство только для чтения того класса, объекты которого мы сортируем. Но вначале нам нужно добавить такое свойство в определение класса:
// Добавляем в класс Саг специальное ¦¦ : которое буо,ег эсэерецзть интерфейс I Comparer
public class Car : ГСошраГсО Ie {
II To самое свойство
public static !Comparer SortByPetName
{ get { return (!Comparer)new SortByPetNameO: } }
}
Такое свойство пользователь теперь вряд ли упустит из виду:
// Так можно, но лучше рассчитывать на всяких полвзователей: //Array. Sort(myAutos.new SortByPetName{ ) ) :
SS А вот так гораздо проще и естественней: Array . SortcMyAutos. Саг. SortByPetName):
Код приложения ObjComp можно найти в подкаталоге Chapter 4.
Пространство имен System.Collections 219
IHashCodeProvider
!Enumerator
IComparer
1
IDic-ІІопагуЕ numerator
!List
!Dictionary
Рис. 4.10. Иерархия интерфейсов System .CoI Sections Таблица 4.2. Интерфейсы пространства имен System.Colloctions
Интерфейс
Назначение
ICoI lection
IComparer I Dictionary
Определяет общие характеристики (например, только для чтения и т. д.] для класса-набора элементов
Позволяет сравнивать два объекта
Позволяет представлять содержимое объекта в виде пар имя — значение
продолжение
Пространство имен System.Collections
Наиболее простой вариант набора элементов в С# — это массив System. Array. Однако он, как было сказано в главе 2, уже обладает весьма полезными встроенным . функциями, которые позволяют производить операции сортировки, клонирования, перечисления и расстановки элементов в обратном порядке. Однако создатели библиотеки базовых классов С# приготовили для нас большое количество встроенных типов, которые позволят сэкономить массу времени при решении сто встречающихся задач. В этом разделе мы познакомимся со встроенными пні; ми, определенными в пространстве имен эти типы, как • . -
дуст из самого названия System. Col lectioпs,предназначены для работы с наборами элементов.
Первое, о чем необходимо сказать, - в System .Collect I ons определен набор стандартных интерфейсов (многие из них нам уже пришлось реализовывать в приме-рахэтой главы). Кроме того, эти же интерфейсы определены в большинстве классов System . Collections. Краткий перечень наиболее важных интерфейсов пространства имен System. Со і 1 actions представлен в табл. 4.2.
Многие из этих интерфейсов объединены в иерархии, в то время как некоторые существуют независимо от остальных. Отношения наследования между тітерфс-іі сами представлены на рис. (как мы помним, для интерфейсов вполне
кается множественное наследование).
220 Глава 4
Интерфейсы и коллекции
Таблица 4.2 {продолжение)
Интерфейс
Назначение
!Dictionary Enumerator
IEnumerable IEnumerator
IHashCodeProvider
IList
!Используется для нумерации содержимого объекта, !поддерживающего !Dictionary
Возвращает интерфейс Enumerator для указанного объекта
Обычно используется для поддержки конструкции foreach в отношении
объектов
Возвращает хэш-код для реализации типа с применением выбранного пользователем алгоритма хэширования
Обеспечивает методы для добавления, удаления и индексирования элементов в списке объектов
Наиболее часто используемые классы, определенные в пространстве имен System. Col lections, представлены в табл. 4.3.
Таблица 4.3. Классы System.Collections
Класс
Назначение
Важнейшие из реализованных интерфейсов
ArrayList Hashtable
Queue
Sorted List
Stack
Динамически изменяющий свой размер массив объектов
Представляет набор взаимосвязанных ключей и значений, основанных на хэш-коде ключа
Стандартная очередь, реализованная по принципу FIFO (first-in-first-out, «первым пришел, перзым ушел»)
Аналогично словарю, однако к элементам можно также обратиться по их порядковому номеру (индексу)
Очередь, реализованная по принципу LIFO (last-in-first-out, «последним пришел, первым ушел»), обеспечивающая возможности по проталкиванию данных в стек, выталкиванию данных из стека и считыванию данных
ilist, !Collection, Enumerable и ICIoneable
!Dictionary, !Collection, Enumerable
и ICIoneable. Кроме того, у типов,
которые предназначены
для хранения в Hashtable, всегда
Предыдущая << 1 .. 87 88 89 90 91 92 < 93 > 94 95 96 97 98 99 .. 320 >> Следующая
Реклама
Авторские права © 2009 AdsNet. Все права защищены.
Rambler's Top100