Введение 11
Благодарности 15
Бонус 17
Структура книги 19
Глава 1. Введение в .NET
21
1.1. Платформа .NET 21
1.1.1. Кубики .NET 22
1.1.2. Сборки 23
1.1.3. Язык программирования 25
1.2. Обзор среды разработки Visual Studio .NET 26
1.2.1. Работа с проектами и решениями 27
1.2.2. Панель Server Explorer 30
1.2.3. Панель Toolbox 31
1.2.4. Панель Solution Explorer 34
1.2.5. Панель Class View 36
1.2.6. Панель Properties 37
1.2.7. Работа с файлами 38
1.3. Простейший пример .NET-приложения 38
1.3.1. Проект на языке C# 38
1.3.2. Компиляция и запуск проекта на языке C# 39
1.4. Компиляция приложений 41
1.5. Поставка сборок 43
1.6. Формат исполняемого файла .NET 47
Глава 2. Основы C#.
49
2.1. Комментарии 49
2.2. Переменная 50
2.3. Именование 53
2.4. Работа с переменными 57
2.4.1. Строки и символы 60
2.4.2. Массивы 62
2.4.3. Перечисления 65
2.5. Простейшая математика 68
2.6. Логические операции 73
2.6.1. Условный оператор if 73
2.6.2. Условный оператор switch 76
2.6.3. Сокращенная проверка 77
2.7. Циклы 78
2.7.1. Цикл for 78
2.7.2. Цикл while 81
2.7.3. Цикл do..while 82
2.7.4. Цикл foreach 82
2.8. Управление циклом 84
2.8.1. Оператор break 84
2.8.2. Оператор continue 85
2.9. Константы 86
2.10. Нулевые значения 87
Глава 3. Объектно-ориентированное программирование
88
3.1. Объекты на C# 88
3.2. Свойства 92
3.3. Методы 97
3.3.1. Описание методов 98
3.3.2. Параметры методов 100
3.3.3. Перегрузка методов 106
3.3.4. Конструктор 107
3.3.5. Статичность 111
3.3.6. Рекурсивный вызов методов 114
3.3.7. Деструктор 116
3.4. Метод Main() 118
3.5. Пространства имен 120
3.6. Начальные значения переменных 122
3.7. Объекты только для чтения 122
3.8. Объектно-ориентированное программирование 123
3.8.1. Наследование 123
3.8.2. Инкапсуляция 125
3.8.3. Полиморфизм 126
3.9. Наследование от класса Object 127
3.10. Переопределение методов 128
3.11. Обращение к предку из класса 131
3.12. Вложенные классы 132
3.13. Область видимости 134
3.14. Ссылочные и простые типы данных 136
3.15. Абстрактные классы 137
3.16. Проверка класса объекта 140
3.17. Инициализация свойств 141
Глава 4. Консольные приложения
143
4.1. Украшение консоли 143
4.2. Работа с буфером консоли 146
4.3. Окно консоли 147
4.4. Запись в консоль 148
4.5. Чтение данных из консоли 150
Глава 5. Визуальный интерфейс
153
5.1. Приложение 153
5.1.1. Пространства имен 154
5.1.2. Потоки 157
5.1.3. Класс Application 157
5.2. Наследник Form для главной формы 159
5.2.1. Ресурсы программы 159
5.2.2. Файл для логики модуля 160
5.2.3. Именование формы 161
5.2.4. Код, сгенерированный дизайнером 161
5.2.5. Hello Visual World 164
5.3. Свойства формы 166
5.4. Методы формы 171
5.5. События на примере формы 171
5.6. Компоненты .NET 175
5.7. Общие компоненты 177
5.7.1. Button 178
5.7.2. CheckBox 180
5.7.3. CheckedListBox 181
5.7.4. ComboBox 184
5.7.5. DateTimePicker 186
5.7.6. Label и LinkLabel 187
5.7.7. ListBox 188
5.7.8. ListView 188
5.7.9. PictureBox.. 194
5.7.10. ProgressBar 195
5.7.11. RadioButton 195
5.7.12. TextBox 197
5.7.13. TreeView 197
5.8. Контейнеры 202
5.8.1. GroupBox 202
5.8.2. Panel 203
5.8.3. TabControl 203
5.8.4. FlowLayoutPanel и TableLayoutPanel 204
5.9. Меню и панели инструментов 205
5.9.1. MenuStrip 206
5.9.2. ContextMenuStrip 208
5.9.3. ToolStrip 209
5.9.4. StatusStrip 211
Глава 6. Продвинутое программирование
212
6.1. Приведение и преобразование типов 212
6.2. Все в .NET — это объекты 214
6.3. Работа с перечислениями Enum 215
6.4. Структуры 218
6.5. Дата и время 220
6.6. Класс строк 223
6.7. Перегрузка операторов 225
6.7.1. Математические операторы 225
6.7.2. Операторы сравнения 228
6.7.3. Операторы преобразования 229
6.8. Тип var 231
6.9. Шаблоны 232
Глава 7. Интерфейсы
236
7.1. Объявление интерфейсов 237
7.2. Реализация интерфейсов 238
7.3. Использование реализации интерфейса 240
7.4. Интерфейсы в качестве параметров 243
7.5. Перегрузка интерфейсных методов 243
7.6. Наследование 246
7.7. Клонирование объектов 246
Глава 8. Массивы
249
8.1. Базовый класс для массивов 249
8.2. Невыровненные массивы 251
8.3. Динамические массивы 253
8.4. Индексаторы массива 255
8.5. Интерфейсы массивов 257
8.5.1. Интерфейс IEnumerable 257
8.5.2. Интерфейсы IComparer и IComparable 260
8.6. Оператор yield 263
8.7. Стандартные списки 264
8.7.1. Класс Queue 264
8.7.2. Класс Stack 265
8.7.3. Класс Hashtable 266
8.8. Типизированные массивы 268
8.9. LINQ при работе с массивами 270
Глава 9. Обработка исключительных ситуаций
274
9.1. Исключительные ситуации 274
9.2. Исключения в C# 276
9.3. Оформление блоков try 280
9.4. Ошибки в визуальных приложениях 281
9.5. Генерирование исключительных ситуаций 283
9.6. Иерархия классов исключений 284
9.7. Собственный класс исключения 285
9.8. Блок finally 288
9.9. Переполнение 289
Глава 10. События
292
10.1. Делегаты 292
10.2. События и их вызов 293
10.3. Использование собственных делегатов 296
10.4. Делегаты изнутри 301
10.5. Анонимные методы 302
10.6. Динамическое создание компонентов 303
Глава 11. Формы
306
11.1. Диалоговые окна 307
11.2. Редактирование объектов 311
11.3. Специфичный результат 315
11.4. Немодальные окна 317
11.5. Многодокументный интерфейс 318
Глава 12. Небезопасное программирование
321
12.1. Разрешение небезопасного кода 322
12.2. Указатели 323
12.3. Память 326
12.4. Системные функции 328
Глава 13. Графика
331
13.1. Введение в Graphics 331
13.2. Рисование по событию Paint 333
13.3. Рисование без события Paint 335
13.4. Цвета 337
13.5. Перья 338
13.6. Кисти 341
13.7. Работа с картинками 342
13.8. Графический дизайнер 346
13.9. Рисование элементов списка ListBox 351
Глава 14. Хранение информации
355
14.1. Реестр 355
14.2. Файловая система 360
14.3. Текстовые файлы 364
14.4. Бинарные файлы 367
14.5. XML-файлы 371
14.5.1. Создание XML-документов 372
14.5.2. Чтение XML-документов 376
14.6. Потоки Stream 379
14.7. Потоки MemoryStream 380
14.8. Сериализация 382
14.8.1. Отключение сериализации 385
14.8.2. Особенности сериализации 386
14.8.3. Управление сериализацией 388
Глава 15. Многопоточность
391
15.1. Класс Thread 392
15.2. Передача параметра в поток 395
15.3. Потоки с использованием делегатов 396
15.4. Конкурентный доступ 399
15.5. Доступ к компонентам 402
15.6. Пул потоков 404
15.7. Домены приложений .NET 406
Глава 16. Базы данных
409
16.1. ADO.NET 409
16.2. Строка подключения 412
16.3. Подключение к базе данных 416
16.4. Пул соединений 418
16.5. Выполнение команд 420
16.6. Транзакции 421
16.7. Наборы данных 423
16.8. Чтение результата запроса 428
16.9. Работа с процедурами 429
16.10. Методы OleDbCommand 434
16.11. Отсоединенные данные 437
16.12. Адаптер DataAdapter 440
16.12.1. Конструктор 441
16.12.2. Получение результата запроса 441
16.12.3. Сохранение изменений в базе данных 442
16.12.4. Связанные таблицы 444
16.12.5. Добавление данных 445
16.12.6. Удаление данных 447
16.13. Набор данных DataSet 448
16.13.1. Хранение данных в DataSet 448
16.13.2. Класс DataRow 451
16.13.3. Класс DataColumn 453
16.13.4. Класс DataTable 454
16.14. Таблицы в памяти 455
16.15. Выражения 457
16.16. Ограничения 459
16.17. Манипулирование данными 460
16.17.1. Добавление строк 460
16.17.2. Редактирование данных 462
16.17.3. Поиск данных 464
16.17.4. Удаление строк 464
16.18. Связанные данные 464
16.19. Ограничение внешнего ключа 469
16.20. Фильтрация данных 475
16.21. Представление данных DataView 477
16.22. Схема данных 481
Глава 17. Повторное использование кода
483
17.1. Библиотеки 483
17.2. Создание библиотеки 484
17.3. Приватные сборки 487
17.4. Общие сборки 490
17.5. Создание пользовательских компонентов 492
17.6. Установка компонентов 498
Глава 18. Удаленное взаимодействие
500
18.1. Удаленное взаимодействие в .NET 500
18.2. Структура распределенного приложения 502
18.3. Общая сборка 503
18.4. Сервер 504
18.5. Клиент 507
Глава 19. Сетевое программирование
510
19.1. HTTP-клиент 510
19.2. Прокси-сервер 513
19.3. Класс Uri 514
19.4. Сокеты 516
19.5. Парсинг документа 526
19.6. Клиент-сервер 531

Заключение 538
Список литературы.. 539
Приложение. Описание электронного архива, сопровождающего книгу 540
Предметный указатель 541