Оглавление....4
Предисловие....10
Благодарности....14
Бонус....16
Структура книги....18
Глава 1. Введение в .NET....20
1.1. Платформа .NET....20
1.1.1. Кубики .NET....22
1.1.2. Сборки....23
1.2. Обзор среды разработки Visual Studio .NET....25
1.2.1. Работа с проектами и решениями....25
1.2.2. Панель Server Explorer....28
1.2.3. Панель Toolbox....30
1.2.4. Панель Solution Explorer....32
1.2.5. Панель Class View....35
1.2.6. Работа с файлами....36
1.3. Простейший пример .NET-приложения....36
1.3.1. Проект на языке C#....36
1.3.2. Компиляция и запуск проекта на языке C#....37
1.4. Компиляция приложений....39
1.4.1. Компиляция в .NET Framework....39
1.4.2. Компиляция в .NET Core....41
1.5. Поставка сборок....42
1.6. Формат исполняемого файла .NET....45
Глава 2. Основы C#....48
2.1. Комментарии....48
2.2. Переменная....49
2.3. Именование элементов кода....52
2.4. Работа с переменными....56
2.4.1. Строки и символы....59
2.4.2. Массивы....61
2.4.3. Перечисления....64
2.5. Простейшая математика....67
2.6. Логические операции....72
2.6.1. Условный оператор if....72
2.6.2. Условный оператор switch....75
2.6.3. Сокращенная проверка....76
2.7. Циклы....77
2.7.1. Цикл for....77
2.7.2. Цикл while....79
2.7.3. Цикл do...while....80
2.7.4. Цикл foreach....81
2.8. Управление циклом....83
2.8.1. Оператор break....83
2.8.2. Оператор continue....83
2.9. Константы....85
2.10. Нулевые значения....85
Глава 3. Объектно-ориентированное программирование....88
3.1. Объекты на C#....88
3.2. Свойства....92
3.3. Методы....96
3.3.1. Описание методов....97
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
3.18. Частицы класса....142
Глава 4. Консольные приложения....144
4.1. Украшение консоли....145
4.2. Работа с буфером консоли....147
4.3. Окно консоли....149
4.4. Запись в консоль....149
4.5. Чтение данных из консоли....152
Глава 5. Визуальный интерфейс....154
5.1. Введение в XAML....154
5.2. Универсальные окна....159
5.3. Раскладки, или макеты....161
5.3.1. Сетка....162
5.3.2. Стек....164
5.3.3. Холст....164
5.4. Объявления или код?....164
5.5. Оформление (декорация)....167
5.5.1. Базовые свойства оформления....167
5.5.2. Вложенные компоненты....169
5.5.3. Стили....170
5.6. События в WPF....172
5.7. Работа с данными компонентов....176
5.7.1. Работа с данными «в лоб»....176
5.7.2. Привязка данных....177
5.8. Элементы управления....183
5.8.1. ListBox....183
5.8.2. ComboBox....189
5.8.3. ProgressBar....189
5.9. Что дальше?....190
Глава 6. Продвинутое программирование....192
6.1. Приведение и преобразование типов....192
6.2. Все в .NET — это объекты....194
6.3. Работа с перечислениями Enum....195
6.4. Структуры....198
6.5. Дата и время....200
6.6. Класс строк....203
6.7. Перегрузка операторов....205
6.7.1. Математические операторы....205
6.7.2. Операторы сравнения....208
6.7.3. Операторы преобразования....209
6.8. Тип var....211
6.9. Шаблоны....212
6.10. Анонимные типы....215
6.11. Кортежи....216
6.12. Форматирование строк....217
Глава 7. Интерфейсы....220
7.1. Объявление интерфейсов....221
7.2. Реализация интерфейсов....222
7.3. Использование реализации интерфейса....224
7.4. Интерфейсы в качестве параметров....227
7.5. Перегрузка интерфейсных методов....228
7.6. Наследование....230
7.7. Клонирование объектов....231
Глава 8. Массивы....234
8.1. Базовый класс для массивов....234
8.2. Невыровненные массивы....236
8.3. Динамические массивы....238
8.4. Индексаторы массива....240
8.5. Интерфейсы массивов....242
8.5.1. Интерфейс IEnumerable....242
8.5.2. Интерфейсы IComparer и IComparable....245
8.6. Оператор yield....248
8.7. Стандартные списки....249
8.7.1. Класс Queue....249
8.7.2. Класс Stack....251
8.7.3. Класс Hashtable....251
8.8. Типизированные массивы....253
Глава 9. Обработка исключительных ситуаций....256
9.1. Исключительные ситуации....256
9.2. Исключения в C#....258
9.3. Оформление блоков try....262
9.4. Ошибки в визуальных приложениях....263
9.5. Генерирование исключительных ситуаций....265
9.6. Иерархия классов исключений....266
9.7. Собственный класс исключения....267
9.8. Блок finally....270
9.9. Переполнение....271
Глава 10. События....274
10.1. Делегаты....274
10.2. События и их вызов....275
10.3. Использование собственных делегатов....278
10.4. Делегаты изнутри....283
10.5. Анонимные методы....284
Глава 11. LINQ....286
11.1. LINQ при работе с массивами....286
11.1.1. SQL-стиль использования LINQ....287
11.1.2. Использование LINQ через методы....289
11.2. Магия IEnumerable....289
11.3. Доступ к данным....293
11.4. LINQ для доступа к XML....294
Глава 12. Небезопасное программирование....296
12.1. Разрешеие небезопасного кода....297
12.2. Указатели....298
12.3. Память....301
12.4. Системные функции....303
Глава 13. Графика....306
13.1. Простые фигуры....306
13.2. Растровая графика....310
Глава 14. Хранение информации....312
14.1. Реестр....312
14.2. Файловая система....317
14.3. Текстовые файлы....321
14.4. Бинарные файлы....324
14.5. XML-файлы....328
14.5.1. Создание XML-документов....329
14.5.2. Чтение XML-документов....333
14.6. Потоки Stream....336
14.7. Потоки MemoryStream....338
14.8. Сериализация....339
14.8.1. Отключение сериализации....342
14.8.2. Особенности сериализации....343
14.8.3. Управление сериализацией....345
Глава 15. Многопоточность....348
15.1. Класс Thread....349
15.2. Передача параметра в поток....352
15.3. Потоки с использованием делегатов....353
15.4. Конкурентный доступ....356
15.5. Пул потоков....359
15.6. Домены приложений .NET....361
15.7. Ключевые слова async и await....363
Глава 16. Базы данных....370
16.1. Библиотека ADO.NET....370
16.2. Строка подключения....372
16.3. Подключение к базе данных....377
16.4. Пул соединений....380
16.5. Выполнение команд....381
16.6. Транзакции....383
16.7. Наборы данных....385
16.8. Чтение результата запроса....389
16.9. Работа с процедурами....391
16.10. Методы OleDbCommand....396
16.11. Отсоединенные данные....399
16.12. Адаптер DataAdapter....402
16.12.1. Конструктор....403
16.12.2. Получение результата запроса....403
16.12.3. Сохранение изменений в базе данных....404
16.12.4. Связанные таблицы....406
16.12.5. Добавление данных....407
16.12.6. Удаление данных....409
16.13. Набор данных DataSet....410
16.13.1. Хранение данных в DataSet....410
16.13.2. Класс DataRow....413
16.13.3. Класс DataColumn....415
16.13.4. Класс DataTable....416
16.14. Таблицы в памяти....417
16.15. Выражения....419
16.16. Ограничения....421
16.17. Манипулирование данными....422
16.17.1. Добавление строк....422
16.17.2. Редактирование данных....424
16.17.3. Поиск данных....425
16.17.4. Удаление строк....426
16.18. Связанные данные....426
16.19. Ограничение внешнего ключа....430
16.20. Фильтрация данных....437
16.21. Представление данных DataView....439
16.22. Схема данных....443
Глава 17. Повторное использование кода....446
17.1. Библиотеки....446
17.2. Создание библиотеки....447
17.3. Приватные сборки....451
17.4. Общие сборки....453
17.5. Создание пользовательских компонентов....456
17.6. Установка компонентов....462
Глава 18. Удаленное взаимодействие....464
18.1. Удаленное взаимодействие в .NET....464
18.2. Структура распределенного приложения....466
18.3. Общая сборка....467
18.4. Сервер....468
18.5. Клиент....471
Глава 19. Сетевое программирование....474
19.1. HTTP-клиент....474
19.2. Прокси-сервер....477
19.3. Класс Uri....478
19.4. Сокеты....480
19.5. Парсинг документа....490
19.6. Клиент-сервер....495
Заключение....502
Список литературы....504
Приложение. Описание электронного архива, сопровождающего книгу....506
Предметный указатель....508
Книга посвящена программированию на языке C# для платформы Microsoft .NET, начиная с основ языка и разработки программ для работы в режиме ко-мандной строки и заканчивая созданием современных приложений различной сложности (баз данных, графических программ и др.). Материал сопровождается большим количеством практических примеров. Подробно описывается логика выполнения каждого участка программы. Уделено внимание вопросам повторного использования кода. В четвертом издании уделено особое внимание универсальным приложениям Windows и платформе .NET Core, позволяющей писать код, который может выполняться на Windows, macOS и Linux. На сайте издательства находятся примеры программ, дополнительная справочная информация, а также готовые компоненты, тестовые программы и изображения…