Основная цель этой книги — дать читателю прочные знания синтаксиса
и семантики C#, а также разобрать особенности архитектуры .NET.
После ее прочтения вы познакомитесь со всеми основными областями,
охваченными библиотекой базовых классов C#.
Для приобретения практических навыков
книга содержит множество примеров, иллюстрирующих излагаемый материал.
Для работы с книгой не нужен какой-либо предварительный опыт работы с C#
и платформой .NET, однако при ее написании авторы ориентировались на тех разработчиков,
которые уже имеют опыт работы с одним из современных языков программирования
(C++, Visual Basic, Java или каким-либо другим).
Оглавление
Предисловие
Благодарности
Глава 1. Философия .NET
Современное состояние дел Решение .NET Строительные блоки .NET (CLR, CTS и CLS) Преимущества C# Языки программирования .NET Обзор двоичных файлов .NET (`сборки`) Роль Microsoft Intermediate Language Роль метаданных Компиляция IL в платформенно-зависимые инструкции Типы .NET и пространства имен .NET Основы Common Language Runtime - среды выполнения .NET Стандартная система типов CTS Основы CLS Работа с пространствами имен Важнейшие пространства имен .NET Обращения к внешним сборкам Как получить дополнительную информацию о пространствах имен и типах Создание приложений C# с использованием компилятора командной строки Создание приложений C# с использованием интегрированной среды разработки Visual Studio.NET Подведение итогов
Глава 2. Основы языка C#
Анатомия класса C# Композиция приложения C# Средства форматирования строк в C# Структурные и ссылочные типы Точка отсчета для любых типов: System.Object Системные типы данных и псевдонимы C# От структурного типа к ссылочному типу и наоборот: упаковка и распаковка Значения по умолчанию для встроенных типов данных Константы Циклы в C# Средства управления логикой работы программ в C# Дополнительные операторы C# Определение пользовательских методов класса Статические методы и методы экземпляров Работа с массивами Работа со строками Перечисления C# Определение структур в C# Еще раз об упаковке и распаковке Определяем пользовательские пространства имен Подведение итогов
Глава 3. C# и объектно-ориентированное программирование
Формальное определение класса в C# Определение открытого интерфейса по умолчанию Столпы объектно-ориентированного программирования Средства инкапсуляции в C# Псевдоинкапсуляция: создание полей `только для чтения` Поддержка наследования в C# Хранение `семейных тайн`: ключевое слово protected Определение вложенных типов Поддержка полиморфизма в C# Приведение типов в C# Обработка исключений Жизненный цикл объектов Завершение ссылки на объект Создание метода удаления для конкретного случая Взаимодействие со сборщиком мусора Подведение итогов
Глава 4. Интерфейсы и коллекции
Программирование с использованием интерфейсов Создание пользовательского нумератора (интерфейсы IEnumerable и IEnumerator) Создание клонируемых объектов (интерфейс ICloneable) Создание сравниваемых объектов (интерфейс IComparable) Пространство имен System.Collections Подведение итогов
Глава 5. Дополнительные возможности классов C#
Создание пользовательского индексатора Перегрузка операторов Делегаты События Документирование в формате XML Просмотр файла документации в формате XML Создание документации в формате HTML Подведение итогов
Глава 6. Сборки, потоки и домены приложений
Проблемы с классическими двоичными файлами COM Обзор сборок .NET Создание тестовой однофайловой сборки Клиентское приложение C# Клиентское приложение Visual Basic.NET Межъязыковое наследование Подробности манифеста CarLibrary Метаданные и код IL для типов CarLibrary Частные сборки Технология `зондирования` Сборки для общего доступа Общие (`сильные`) имена сборок Применение сборки для общего пользования в приложении Политика версий .NET Запись информации о версии Управление загрузкой разных версий сборок Администраторский файл конфигурации Работа с потоками в традиционных приложениях Win32 Что такое домен приложения Пространство имен System.Threading Именованные потоки Ключевое слово lock Применение System.Threading.Interlocked Подведение итогов
Глава 7. Рефлексия типов и программирование с использованием атрибутов
Что такое рефлексия типов Класс Type Типы пространства имен System.Reflection Загрузка сборки Применение позднего связывания Применение динамических сборок Программирование с использованием атрибутов Создание пользовательских атрибутов Файл AssemblyInfo.cs Как работать с атрибутами в процессе выполнения программы Подведение итогов
Глава 8. Окна становятся лучше: введение в Windows.Forms
Два главных пространства имен для организации графического интерфейса Обзор пространства имен Windows.Forms Взаимодействие с типами Windows.Forms Класс System.Windows.Forms.Application Анатомия формы Класс Component Класс Control События класса Control Реагируем на события клавиатуры Еще немного о классе Control Класс ScrollableControl Класс ContainerControl Класс Form Создаем меню Создание системы меню в приложении Создаем меню при помощи IDE Visual Sudio.NET Что такое строка состояния Создаем панель инструментов Создаем панели инструментов при помощи Visual Studio IDE Пример приложения Windows Forms для работы с реестром и журналом событий Windows 2000 Взаимодействие с журналом событий Windows 2000 Подведение итогов
Глава 9. Графика становится лучше (GDI+)
Обзор пространств имен GDI+ Пространство имен System.Drawing Служебные типы System.Drawing Сеансы вывода графики Возможности класса Graphics Система координат по умолчанию в GDI+ Работа с цветом Работа со шрифтами Обзор пространства имен System.Drawing.Drawing2D Вывод изображений Перетаскивание, проверка попадания в область, занимаемую изображением,и элемент управления PictureBox Работа с форматами реcурсов .NET Пространство имен System.Resources Работаем с типом ResourceWriter Работаем с типом ResourceManager Работа с ресурсами при помощи IDE Visual Studio.NET Подведение итогов
Глава 10. Элементы управления
Иерархия классов элементов управления Как вручную добавить элементы управления на форму Как добавить элементы управления на форму при помощи Visual Studio Элемент управления TextBox Великая и могучая кнопка (а также родительский класс ButtonBase) Работаем с флажками Работаем с переключателями и группирующими рамками Настраиваем порядок перехода по Tab Элемент управления TrackBar Элемент управления MonthCalendar Еще немного о типе DateTime Элементы управления UpDown Элемент управления Panel Всплывающие подсказки (ToolTips) для элементов управления Элемент управления ErrorProvider Закрепление элемента управления в определенном месте формы Стыковка элемента управления с краем формы Создание пользовательских диалоговых окон Наследование форм Подведение итогов
Глава 11. Ввод, вывод и сериализация объектов
Знакомство с пространством имен System.IO Типы Directory(Info) и File(Info) Получение доступа к файлам через объект DirectoryInfo Создаем подкаталоги при помощи класса DirectoryInfo Статические члены класса Directory Класс FileInfo Абстрактный класс Stream Классы StreamWriter и StreamReader Класс StringWriter Класс StringReader Работа с двоичными данными (классы BinaryReader и BinaryWriter) Сохранение объектов в .NET Графы для отношений объектов Настройка объектов для сериализации Сериализация в двоичном формате Сериализация в формате SOAP Сериализация в пользовательском формате и интерфейс ISerializable Приложение для регистрации автомобилей с графическим интерфейсом Подведение итогов
Глава 12. Взаимодействие с унаследованным программным кодом
Главные вопросы совместимости Пространство имен System.Runtime.InteropServices Взаимодействие с модулями DLL, созданными на C Взаимодействие .NET и COM Создание простого COM-сервера в Visual Basic 6.0 Создаем простой клиент COM в Visual Basic 6.0 Импорт библиотеки типов Добавление ссылки на сборку Особенности созданной нами сборки Создаем COM-сервер при помощи ATL Клиент COM-сервера в Visual Basic 6.0 Полный код клиента C# Обращение клиента COM к сборке .NET Роль CCW Понятие интерфейса класса Создание типа .NET Генерация библиотеки типов и регистрация типов .NET Анализ созданной библиотеки типов Просмотр типов .NET в OLE/COM Object Viewer Просмотр записей в реестре Создаем клиента в Visual Basic 6.0 Некоторые особенности отображения типов .NET в COM Управление процессом генерации кода IDL (как повлиять на то, что делает утилита tlbexp.exe) Управление регистрацией промежуточного модуля CCW Взаимодействие со службами COM+ Особенности создания типов .NET для работы под COM+ Пример класса C# для работы под COM+ Проверяем установку при помощи Component Services Explorer Подведение итогов
Глава 13. Доступ к данным при помощи ADO.NET
Почему потребовалось создавать ADO.NET Знакомство с пространствами имен ADO.NET Типы пространства имен System.Data Тип DataColumn Тип DataRow Тип DataTable Создаем объект DataTable Тип DataView Возможности класса DataSet Моделируем отношения между таблицами при помощи класса DataRelation Работа с управляемым провайдером SQL Автоматическое создание команд SQL Заполнение объекта DataSet с несколькими таблицами и добавление объектов DataRelations Подведение итогов
Глава 14. Разработка web-приложений и ASP.NET
Web-приложения и web-серверы Структура документа HTML Клиентские скрипты Передаем данные формы (методы GET и POST) Создание классической страницы ASP Первое приложение ASP.NET Некоторые проблемы классических ASP Пространства имен ASP.NET Приложение и сеанс подключения пользователя Создание простого web-приложения на C# Архитектура web-приложения ASP.NET Отладка и трассировка приложений ASP.NET Элементы управления WebForm Создание элементов управления WebForm Виды элементов управления WebForm Подведение итогов
Глава 15. Web-службы
Роль web-служб Инфраструктура web-службы Обзор пространств имен web-служб Пространство имен System.Web.Services Пример элементарной web-службы Тип WebMethodAttribute Web Service Description Language (WSDL) Протоколы подключения к web-службам Прокси-сборки для web-служб Компилируем прокси-сборку Создание клиента для работы через прокси-сборку Создание прокси-сборки в Visual Studio.NET Пример более сложной web-службы (и ее клиентов) Создание типов для сериализации (некоторые уточнения) Протокол обнаружения web-службы Подведение итогов
Алфавитный указатель
Комментарии
Андрей Мартынов
На сегодняшний день это самое полное руководство по C# и среде .Net,
изданное на русском языке.
При взгляде на оглавление закрадывается сомнение: можно ли в одной
книге охватить столько тем? WinForms, GDI+, ADO.NET, ASP.NET,
Web-службы ... и это не считая обязательных, проходных тем для
книг по C# ! Как на счёт глубины изложения материала?
Так вот. С глубиной всё нормально. Более того. Можно сказать, что это
книга не для начинающих программистов, но для тех, для кого C#
- это уже не первый язык за плечами, а .Net не первая среда исполнения.
Это книга для тех, кому надо быстро, без проволочек перейти от слов к делу,
для тех кому надо уже сегодня писать не упражнения, а реально применять
.Net в своей каждодневной работе. Автор не задерживается на изложении
основ языка С# и основ объектно-ориентированного программирования,
а быстро переходит к тому, что является сутью .Net, к её ключевым технологиям.
И описывает их довольно конкретно и содержательно. Выбор материала
хорошо продуман.
Кстати, стоит книга 182 рубля. Ощутите разницу с ценой существенно более
скромного по содержанию двухтомника Петцольда!
Правда перевод не блещет. На четвёрку с минусом:
перлы встречаются, но они не отвлекают и не мешают (чаще забавляют 8-).
Короче, книжка на мой взгляд очень удачная. Рекомендую.