// |
Ожидаем |
п о д т в е р ж д е н и я п о л ь з о в а т е л я |
C o n s o l e . W r i t e L i n e ( " Н а ж м и т е |
< E n t e r > для " + |
|
|
|
" з а в е р ш е н и я |
п р о г р а м м ы . . . " ) . ; |
C o n s o l e . R e a d ( ) ; |
|
|
|
public |
c l a s s S t u d e n t |
: I C o m p a r a b l e |
|
// См. |
полную |
версию |
программы |
на |
п р и л а г а е м о м |
// к о м п а к т - д и с к е
В приведенном листинге имеется три инстанцирования L i s t < T > : для i n t , s t r i n g в Student. В программе также продемонстрировано следующее:
безопасность типов, позволяющая избежать добавления данных неверного типа; возможность применения для коллекции L i s t < T > цикла f o r e a c h , как и для лю бой другой коллекции; добавление объектов, как по одному, так и сразу целым массивом;
сортировка списка (в предположении, что элементы реализуют интерфейс ICom p a r a b l e ) ;
вставка нового элемента между имеющимися; получение количества элементов в списке; проверка, содержится ли в списке конкретный объект; удаление элемента из списка; копирование элементов из списка в массив.
Это только небольшой пример использования методов L i s t < T > . У других обобщен ии коллекций имеются свои наборы методов, однако все они схожи в применении.
Главное улучшение заключается в том, что компилятор предупреждает добав ление в коллекцию данных типа, отличного от того, для которого она инстанцирована.
Помимо встроенных обобщенных классов коллекций, С# позволяет написать собственные обобщенные классы — как коллекции, так и другие типы классов. Главное, что вы имеете возможность создать обобщенные версии классов, которые проектированы вами.
Определение обобщенного класса переполнено записями <Т>. Когда вы инстанцируете такой класс, вы указываете тип, который заменит Т так же, как и в случае усмотренных обобщенных коллекций. Посмотрите, насколько схожи приведенные
иже объявления: |
|
LinkedList<int> a L i s t |
= new L i n k e d L i s t < i n t > () ; |
MyClass<int> a C l a s s = |
new M y C l a s s < i n t > () ; |