Оглавление ВВЕДЕНИЕ 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