Книга представляет собой очень подробное и полное описание всего одной (но зато КАКОЙ!!!) новой черты .NET 2.0, что отличает её от книг, которые посвящены всему (или почти всему) сразу. С другой стороны, фундаментальный характер generics приводит к тому, что рассматривается в результате опять таки всё связанное с программированием в среде .NET. Главной характеристикой книги можно назвать глубину и подробность изложения в каждой из рассматриваемой области. А рассматривается:
- что такое generics, зачем они нужны, как они реализованы в .NET 2.0 и чем они отличаются от шаблонов (templates) C++ (те, кто пришёл в .NET из C++ будут просто в восторге);
- классы, методы, делегаты, constraints, но всё в контексте использования generics;
- generics в библиотеке классов (BCL – base class library) – не только коллекции;
- nullable types (это тоже generics) и другие не менее важные вещи;
- примеры на VB.NET и C# дополнены отдельными главами по программированию generics J# и С++;
- глава-бомба – рекомендации по использованию generics;
- ну и на сладкое – детальное описание Power Collections (http://www.wintellect.com/powercollections/) – библиотеки классов, основанной на generics, для работы с коллекциями, списками и прочими подобными структурами, дополненная (по сравнению с аналогами из BCL) продвинутыми специализированными классами (в том числе, и более «лёгкими» по сравнению со стандартными).
Книга показывает громадную роль, которую получили generics в новой версии .NET. В отличие от прочих изменений, generics затрагивают практически все аспекты программирования .NET. Безусловно, можно продолжать использовать все те подходы/способы/приёмы программирования, которые были доступны в .NET 1.*, но после прочтения книги складывается впечатление о «бесцельно прожитых годах» J, проведенных в написании кода под типизированные коллекции и прочие прелести до-generics эпохи.
Много внимания в книге посвящено правилам написания хороших библиотек - понятных и предсказуемых в своём поведении.
Вердикт однозначный: обязательно к прочтению/изучению/применению всем, кто пишет/собирается писать под .NET 2.*/3.*.