Программирование на С# (2-е издание)
Год: 2003
Автор: Либерти Д.
Переводчик: Иноземцев С.
Издательство: Символ-Плюс
ISBN: 5-93286-038-3
Язык: Русский
Формат: PDF
Качество: Изначально компьютерное (eBook)
Интерактивное оглавление: Да
Количество страниц: 681
Описание: Созданный в Microsoft специально для новой платформы .NET, язык C# прост, безопасен и нацелен на работу в Интернете. Книга «Программирование на С#» поможет вам быстро приступить к практической разработке веб и Windows приложений на платформе .NET, работающих как на локальном компьютере, так и в Интернете.
В первой части книги обсуждаются основы языка и такие понятия ООП, как классы и объекты, наследование и полиморфизм, перегрузка операций, структуры и интерфейсы, массивы, индексаторы и коллекции, строковые объекты и регулярные выражения, исключения и обработка ошибок, делегаты и события. Вторая часть целиком посвящена созданию приложений и содержит обсуждение ADO.NET, ASP.NET и Windows Forms. Технология ASP.NET включает в себя как Web Forms для быстрой разработки вебприложений, так и Web Services для создания объектов без графического интерфейса, оказывающих услуги в Интернете. В третьей части рассматривается платформа .NET Framework. Особое внимание уделено атрибутам и отражению, удаленным объектам, вычислительным потокам и синхронизации, а также потокам ввода/вывода. Здесь же представлены способы взаимодействия с объектами COM.
Оглавление
Предисловие . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9
I. Язык программирования C#. . . . . . . . . . . . . . . . . . . . . . . . . . . . 19
1. C# и .NET Framework . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21
Платформа .NET. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21
.NET Framework . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22
Компиляция и язык MSIL . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25
Язык программирования C#. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26
2. Начинаем. Программа Hello World. . . . . . . . . . . . . . . . . . . . . . . . . . . . 28
Классы, объекты и типы. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28
Разработка программы Hello World . . . . . . . . . . . . . . . . . . . . . . . . . . . 35
Использование отладчика Visual Studio .NET . . . . . . . . . . . . . . . . . . 39
3. Основы языка программирования C# . . . . . . . . . . . . . . . . . . . . . . . . 43
Типы. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 44
Переменные и константы . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 48
Выражения. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 55
Пробельные символы. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 55
Операторы . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 57
Операции . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 72
Пространства имен. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 80
Директивы препроцессора . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 82
4. Классы и объекты . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 86
Определение классов . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 87
Создание объектов . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 92
Статические члены класса . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 99
Уничтожение объектов . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .103
Передача параметров. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .106
Перегрузка методов и конструкторов . . . . . . . . . . . . . . . . . . . . . . . . .112
Инкапсуляция данных в свойствах . . . . . . . . . . . . . . . . . . . . . . . . . . .115
Поля, предназначенные только для чтения . . . . . . . . . . . . . . . . . . .118
5. Наследование и полиморфизм. . . . . . . . . . . . . . . . . . . . . . . . . . . . . .120
Специализация и обобщение . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .120
Наследование. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .123
Полиморфизм . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .127
Абстрактные классы . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .133
Корень всех классов – класс Object . . . . . . . . . . . . . . . . . . . . . . . . . . .137
Упаковка и распаковка типов . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .139
Вложенные классы. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .141
6. Перегрузка операций. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .144
Ключевое слово operator. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .144
Поддержка других языков платформы .NET . . . . . . . . . . . . . . . . . .145
Создание новых операций . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .146
Логические пары . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .146
Операция проверки на равенство . . . . . . . . . . . . . . . . . . . . . . . . . . . . .146
Операции преобразования типов . . . . . . . . . . . . . . . . . . . . . . . . . . . . .147
7. Структуры. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .154
Определение структур. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .155
Создание структур . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .157
8. Интерфейсы . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .162
Реализация интерфейса . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .163
Обращение к методам интерфейса . . . . . . . . . . . . . . . . . . . . . . . . . . . .171
Переопределение реализации интерфейса. . . . . . . . . . . . . . . . . . . . .177
Явная реализация интерфейса . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .181
9. Массивы, индексаторы и классы коллекций. . . . . . . . . . . . . . . . . .191
Массивы . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .191
Оператор foreach. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .196
Индексаторы . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .210
Интерфейсы классов коллекций . . . . . . . . . . . . . . . . . . . . . . . . . . . . .220
Класс ArrayList . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .225
Очереди . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .237
Стек . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .240
Словари . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .243
10. Строки и регулярные выражения. . . . . . . . . . . . . . . . . . . . . . . . . . . .251
Строки . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .252
Регулярные выражения . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .267
11. Обработка исключений . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .279
Вызов и обработка исключений . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .280
Объекты Exception . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .289
Вызов пользовательских исключений . . . . . . . . . . . . . . . . . . . . . . . .293
Повторный вызов исключения . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .295
12. Делегаты и события . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .299
Делегаты. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .300
События. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .320
II. Программирование на C#. . . . . . . . . . . . . . . . . . . . . . . . . . . . . .331
13. Создание Windowsприложений . . . . . . . . . . . . . . . . . . . . . . . . . . . .333
Создание простой формы Windows . . . . . . . . . . . . . . . . . . . . . . . . . . .335
Создание приложения Windows Forms. . . . . . . . . . . . . . . . . . . . . . . .347
Документирующие комментарии XML . . . . . . . . . . . . . . . . . . . . . . .371
Развертывание приложения . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .372
14. Доступ к данным с помощью ADO.NET . . . . . . . . . . . . . . . . . . . . . . .384
Реляционные базы данных и язык SQL . . . . . . . . . . . . . . . . . . . . . . .385
Объектная модель ADO.NET . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .389
Приступаем к работе с моделью ADO.NET. . . . . . . . . . . . . . . . . . . . .390
Использование управляемых поставщиков OLE DB . . . . . . . . . . . .394
Использование элементов управления с привязкой данных. . . . .397
Изменение записей в базе данных . . . . . . . . . . . . . . . . . . . . . . . . . . . .407
Модель ADO.NET и технология XML . . . . . . . . . . . . . . . . . . . . . . . . .424
15. Создание вебприложений с помощью Web Forms . . . . . . . . . . .426
Среда Web Forms. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .427
Создание вебформы. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .431
Добавление элементов управления . . . . . . . . . . . . . . . . . . . . . . . . . . .434
Привязка данных . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .437
Реакция на отправляющие события . . . . . . . . . . . . . . . . . . . . . . . . . .445
Технология ASP.NET и язык С# . . . . . . . . . . . . . . . . . . . . . . . . . . . . .447
16. Вебслужбы. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .448
SOAP, WSDL и Discovery . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .449
Построение вебслужбы . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .450
Создание классапосредника . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .457
III. CLR и .NET Framework. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .461
17. Сборки и контроль версий . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .463
PEфайлы . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .463
Метаданные . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .464
Границы безопасности. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .464
Контроль версий . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .464
Манифесты. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .464
Многомодульные сборки . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .466
Закрытые сборки . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .474
Совместно используемые сборки . . . . . . . . . . . . . . . . . . . . . . . . . . . . .476
18. Атрибуты и отражение . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .483
Атрибуты . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .483
Стандартные атрибуты . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .484
Пользовательские атрибуты . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .486
Отражение . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .490
Динамическая генерация кода . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .500
19. Маршалинг и удаленные компоненты. . . . . . . . . . . . . . . . . . . . . . .525
Домены приложений . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .527
Контекст . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .537
Удаленные объекты . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .540
20. Потоки и синхронизация. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .551
Потоки. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .552
Синхронизация . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .561
Состояние гонки и взаимные блокировки . . . . . . . . . . . . . . . . . . . . .573
21. Потоки данных . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .575
Файлы и каталоги . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .576
Чтение и запись данных . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .588
Асинхронный ввод/вывод . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .594
Сетевой ввод/вывод . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .600
Вебпотоки . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .618
Сериализация . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .621
Изолированная память . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .630
22. Взаимодействие .NET и COM . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .634
Импорт элементов управления ActiveX . . . . . . . . . . . . . . . . . . . . . . .634
Импорт компонентов COM . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .643
Экспорт компонентов .NET . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .651
Техника P/Invoke . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .653
Указатели . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .656
Приложение. Ключевые слова языка C# . . . . . . . . . . . . . . . . . . . . .661
Алфавитный указатель . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .665
Доп. информация: Снята защита с pdf-файла. Удалены все пустые листы. Удалён текст лиц. соглашения издательства, засирающий книгу в различных местах. Добавлена обложка.