Оглавление ВВЕДЕНИЕ	1
 БЛАГОДАРНОСТИ	5
 БОНУС	7
 СТРУКТУРА КНИГИ	9
 ГЛАВА 1. ВВЕДЕНИЕ В .NET 11
 1.1. Платформа .NET	11
 1.1.1. Кубики .NET	12
 1.1.2. Сборки	14
 1.1.3. Язык программирования	15
 1.2. Обзор среды разработки Visual Studio .NET	16
 1.2.1. Работа с проектами и решениями	17
 1.2.2. Server Explorer	20
 1.2.3. Toolbox	22
 1.2.4. Solution Explorer	24
 1.2.5. Class View	27
 1.2.6. Properties	28
 1.2.7. Работа с файлами	28
 1.3. Простейший пример .NET-приложения	29
 1.3.1. Проект на языке C#	30
 1.3.2. Компиляция и запуск проекта на языке C#	30
 1.4. Компиляция приложений	33
 1.5. Поставка сборок	34
 1.6. Формат исполняемого файла .NET	38
 ГЛАВА 2. ОСНОВЫ C# 41
 2.1. Комментарии	41
 2.2. Переменная	42
 2.3. Именование	45
 2.4. Работа с переменными	49
 2.4.1. Строки и символы	52
 2.4.2. Массивы	54
 2.4.3. Перечисления	57
 2.5. Простейшая математика	60
 2.6. Логические операции	64
 2.6.1. Условный оператор if	65
 2.6.2. Условный оператор switch	67
 2.6.3. Сокращенная проверка	68
 2.7. Циклы	68
 2.7.1. Цикл for	69
 2.7.2. Цикл while	71
 2.7.3. Цикл do..while	72
 2.7.4. Цикл foreach	73
 2.8. Управление циклом	75
 2.8.1. Оператор break	75
 2.8.2. Оператор continue	75
 2.9. Константы	77
 2.10. Нулевые значения	77
 ГЛАВА 3. ОБЪЕКТНО-ОРИЕНТИРОВАННОЕ ПРОГРАММИРОВАНИЕ 79
 3.1. Объекты на C#	79
 3.2. Свойства	83
 3.3. Методы	88
 3.3.1. Описание методов	89
 3.3.2. Параметры методов	91
 3.3.3. Перегрузка методов	97
 3.3.4. Конструктор	98
 3.3.5. Статичность	101
 3.3.6. Рекурсивный вызов методов	104
 3.3.7. Деструктор	106
 3.4. Метод Main()	108
 3.5. Пространства имен	110
 3.6. Начальные значения переменных	112
 3.7. Объекты только для чтения	113
 3.8. Объектно-ориентированное программирование	113
 3.8.1. Наследование	114
 3.8.2. Инкапсуляция	115
 3.8.3. Полиморфизм	116
 3.9. Наследование от класса Object	117
 3.10. Переопределение методов	119
 3.11. Обращение к предку из класса	121
 3.12. Вложенные классы	122
 3.13. Область видимости	124
 3.14. Ссылочные и простые типы данных	126
 3.15. Абстрактные классы	127
 3.16. Проверка класса объекта	130
 ГЛАВА 4. КОНСОЛЬНЫЕ ПРИЛОЖЕНИЯ 131
 4.1. Украшение консоли	131
 4.2. Работа с буфером консоли	134
 4.3. Окно консоли	135
 4.4. Запись в консоль	136
 4.5. Чтение данных из консоли	138
 ГЛАВА 5. ВИЗУАЛЬНЫЙ ИНТЕРФЕЙС 141
 5.1. Приложение	141
 5.1.1. Пространства имен	143
 5.1.2. Потоки	145
 5.1.3. Класс Application	146
 5.2. Наследник Form для главной формы	147
 5.2.1. Ресурсы программы	147
 5.2.2. Файл для логики модуля	148
 5.2.3. Именование формы	149
 5.2.4. Код, сгенерированный дизайнером	150
 5.2.5. Hello Visual World	153
 5.3. Свойства формы	154
 5.4. Методы формы	159
 5.5. События на примере формы	160
 5.6. Компоненты .NET	163
 5.7. Общие компоненты	166
 5.7.1. Button	167
 5.7.2. CheckBox	170
 5.7.3. CheckedListBox	170
 5.7.4. ComboBox	173
 5.7.5. DateTimePicker	175
 5.7.6. Label и LinkLabel	176
 5.7.7. ListBox	177
 5.7.8. ListView	178
 5.7.9. PictureBox	183
 5.7.10. ProgressBar	184
 5.7.11. RadioButton	185
 5.7.12. TextBox	186
 5.7.13. TreeView	186
 5.8. Контейнеры	191
 5.8.1. GroupBox	191
 5.8.2. Panel	192
 5.8.3. TabControl	192
 5.8.4. FlowLayoutPanel и TableLayoutPanel	193
 5.9. Меню и панели инструментов	195
 5.9.1. MenuStrip	195
 5.9.2. ContextMenuStrip	197
 5.9.3. ToolStrip	199
 5.9.4. StatusStrip	200
 ГЛАВА 6. ПРОДВИНУТОЕ ПРОГРАММИРОВАНИЕ 201
 6.1. Приведение и преобразование типов	201
 6.2. Все в .NET это объекты	203
 6.3. Работа с перечислениями Enum	204
 6.4. Структуры	207
 6.5. Дата и время	209
 6.6. Класс строк	211
 6.7. Перегрузка операторов	213
 6.7.1. Математические операторы	214
 6.7.2. Операторы сравнения	216
 6.7.3. Операторы преобразования	217
 6.8. Тип var	219
 6.9. Шаблоны	220
 ГЛАВА 7. ИНТЕРФЕЙСЫ 225
 7.1. Объявление интерфейсов	225
 7.2. Реализация интерфейсов	227
 7.3. Использование реализации интерфейса	229
 7.4. Интерфейсы в качестве параметров	232
 7.5. Перегрузка интерфейсных методов	232
 7.6. Наследование	235
 7.7. Клонирование объектов	235
 ГЛАВА 8. МАССИВЫ 239
 8.1. Базовый класс для массивов	239
 8.2. Невыровненные массивы	241
 8.3. Динамические массивы	243
 8.4. Индексаторы массива	245
 8.5. Интерфейсы массивов	246
 8.5.1. Интерфейс IEnumerable	247
 8.5.2. Интерфейсы IComparer и IComparable	249
 8.6. Оператор yield	253
 8.7. Стандартные списки	253
 8.7.1. Класс Queue	254
 8.7.2. Класс Stack	255
 8.7.3. Класс Hashtable	255
 8.8. Типизированные массивы	257
 ГЛАВА 9. ОБРАБОТКА ИСКЛЮЧИТЕЛЬНЫХ СИТУАЦИЙ 261
 9.1. Исключительные ситуации	261
 9.2. Исключения в C#	263
 9.3. Оформление блоков try	267
 9.4. Ошибки в визуальных приложениях	268
 9.5. Генерирование исключительных ситуаций	270
 9.6. Иерархия классов исключений	271
 9.7. Собственный класс исключения	272
 9.8. Блок finally	275
 9.9. Переполнение	276
 ГЛАВА 10. СОБЫТИЯ В C# 281
 10.1. Делегаты	281
 10.2. События и их вызов	282
 10.3. Использование собственных делегатов	285
 10.4. Делегаты изнутри	290
 10.5. Анонимные методы	291
 10.6. Динамическое создание компонентов	292
 ГЛАВА 11. ФОРМЫ 295
 11.1. Диалоговые окна	296
 11.2. Редактирование объектов	300
 11.3. Специфичный результат	304
 11.4. Немодальные окна	307
 11.5. Многодокументный интерфейс	307
 ГЛАВА 12. НЕБЕЗОПАСНОЕ ПРОГРАММИРОВАНИЕ 311
 12.1. Разрешение небезопасного кода	312
 12.2. Указатели	313
 12.3. Память	316
 12.4. Системные функции	318
 ГЛАВА 13. ГРАФИКА 321
 13.1. Введение в Graphics	321
 13.2. Рисование по событию Paint	323
 13.3. Рисование без события Paint	325
 13.4. Цвета	326
 13.5. Перья	328
 13.6. Кисти	330
 13.7. Работа с картинками	331
 13.8. Графический дизайнер	336
 13.9. Рисование элементов списка ListBox	341
 ГЛАВА 14. ХРАНЕНИЕ ИНФОРМАЦИИ 345
 14.1. Реестр	345
 14.2. Файловая система	350
 14.3. Текстовые файлы	354
 14.4. Бинарные файлы	357
 14.5. XML-файлы	361
 14.5.1. Создание XML-документов	362
 14.5.2. Чтение XML-документов	365
 14.6. Потоки Stream	369
 14.7. Потоки MemoryStream	370
 14.8. Сериализация	372
 14.8.1. Отключение сериализации	375
 14.8.2. Особенности сериализации	376
 14.8.3. Управление сериализацией	378
 ГЛАВА 15. МНОГОПОТОЧНОСТЬ 383
 15.1. Класс Thread	384
 15.2. Передача параметра в поток	387
 15.3. Потоки с использованием делегатов	388
 15.4. Конкурентный доступ	391
 15.5. Доступ к компонентам	394
 15.6. Пул потоков	396
 15.7. Домены приложений .NET	398
 ГЛАВА 16. БАЗЫ ДАННЫХ 401
 16.1. ADO.NET	401
 16.2. Строка подключения	404
 16.3. Подключение к базе данных	408
 16.4. Пул соединений	410
 16.5. Выполнение команд	412
 16.6. Транзакции	413
 16.7. Наборы данных	415
 16.8. Чтение результата запроса	420
 16.9. Работа с процедурами	422
 16.10. Методы OleDbCommand	427
 16.11. Отсоединенные данные	429
 16.12. Адаптер DataAdapter	433
 16.12.1. Конструктор	434
 16.12.2. Получение результата запроса	434
 16.12.3. Сохранение изменений в базе данных	435
 16.12.4. Связанные таблицы	437
 16.12.5. Добавление данных	438
 16.12.6. Удаление данных	440
 16.13. Набор данных DataSet	441
 16.13.1. Хранение данных в DataSet	441
 16.13.2. Класс DataRow	444
 16.13.3. Класс DataColumn	446
 16.13.4. Класс DataTable	447
 16.14. Таблицы в памяти	448
 16.15. Выражения	450
 16.16. Ограничения	452
 16.17. Манипулирование данными	453
 16.17.1. Добавление строк	454
 16.17.2. Редактирование данных	455
 16.17.3. Поиск данных	457
 16.17.4. Удаление строк	457
 16.18. Связанные данные	458
 16.19. Ограничение внешнего ключа	462
 16.20. Фильтрация данных	469
 16.21. Представление данных DataView	471
 16.22. Схема данных	475
 ГЛАВА 17. ПОВТОРНОЕ ИСПОЛЬЗОВАНИЕ КОДА 477
 17.1. Библиотеки	477
 17.2. Создание библиотеки	478
 17.3. Приватные сборки	482
 17.4. Общие сборки	484
 17.5. Создание пользовательских компонентов	486
 17.6. Установка компонентов	493
 ГЛАВА 18. УДАЛЕННОЕ ВЗАИМОДЕЙСТВИЕ 495
 18.1. Удаленное взаимодействие в .NET	495
 18.2. Структура распределенного приложения	497
 18.3. Общая сборка	498
 18.4. Сервер	499
 18.5. Клиент	502
 ГЛАВА 19. СЕТЕВОЕ ПРОГРАММИРОВАНИЕ 505
 19.1. HTTP-клиент	505
 19.2. Прокси-сервер	508
 19.3. Класс Uri	509
 19.4. Сокеты	511
 19.5. Парсинг документа	522
 19.6. Клиент-сервер	526
 ЗАКЛЮЧЕНИЕ	535
 ОПИСАНИЕ КОМПАКТ-ДИСКА	537
 СПИСОК ЛИТЕРАТУРЫ	539
 ПРЕДМЕТНЫЙ УКАЗАТЕЛЬ	541