Глава 1. Введение в C#
Язык C# и платформа .NET
Первая программа на C# с .NET CLI
Начало работы с Visual Studio. Первая программа
Первое приложение в WSL
Глава 2. Основы программирования на C#
Структура программы
Переменные и константы
Литералы
Типы данных
Консольный ввод-вывод
Арифметические операции
Поразрядные операции
Операции присваивания
Преобразования базовых типов данных
Условные выражения
Конструкция if..else и тернарная операция
Циклы
Массивы
Задачи с массивами
Методы
Параметры методов
Возвращение значения и оператор return
Передача параметров по ссылке и значению. Выходные параметры
Массив параметров и ключевое слово params
Рекурсивные функции
Локальные функции
Конструкция switch
Перечисления enum
Глава 3. Классы, структуры и пространства имен
Классы и объекты
Конструкторы, инициализаторы и деконструкторы
Класс Program и метод Main. Программы верхнего уровня
Структуры
Типы значений и ссылочные типы
Область видимости (контекст) переменных
Пространства имен
Глобальные пространства имен
Подключение пространств имен по умолчанию
Создание библиотеки классов в Visual Studio
Создание библиотеки классов с помощью .NET CLI
Модификаторы доступа
Свойства
Перегрузка методов
Статические члены и модификатор static
Установка пакетов Nuget
Константы, поля и структуры для чтения
Null и ссылочные типы
Null и значимые типы
Проверка на null, операторы ?. и ??
Псевдонимы типов и статический импорт
Глава 4. Объектно-ориентированное программирование
Наследование
Преобразование типов
Виртуальные методы и свойства
Скрытие методов и свойств
Различие переопределения и скрытия методов
Абстрактные классы
Класс System.Object и его методы
Обобщенные типы
Ограничения обобщений
Наследование обобщенных типов
Глава 5. Обработка исключений
Конструкция try..catch..finally
Блок catch и фильтры исключений
Типы исключений. Класс Exception
Генерация исключения и оператор throw
Создание классов исключений
Поиск блока catch при обработке исключений
Глава 6. Делегаты, события и лямбды
Делегаты
Применение делегатов
Анонимные методы
Лямбды
События
Ковариантность и контравариантность делегатов
Делегаты Action, Predicate и Func
Замыкания
Глава 7. Интерфейсы
Определение интерфейсов
Применение интерфейсов
Явная реализация интерфейсов
Реализация интерфейсов в базовых и производных классах
Наследование интерфейсов
Интерфейсы в обобщениях
Копирование объектов. Интерфейс ICloneable
Сортировка объектов. Интерфейс IComparable
Ковариантность и контравариантность обобщенных интерфейсов
Глава 8. Дополнительные возможности ООП в C#
Определение операторов
Перегрузка операций преобразования типов
Индексаторы
Переменные-ссылки и возвращение ссылки
Методы расширения
Частичные классы и методы
Анонимные типы
Кортежи
Records
Глава 9. Pattern matching
Паттерн типов
Паттерн свойств
Паттерны кортежей
Позиционный паттерн
Реляционный и логический паттерны
Паттерны списков
Глава 10. Коллекции
Список List<T>
Двухсвязный список LinkedList<T>
Очередь Queue<T>
Стек Stack<T>
Словарь Dictionary<T, V>
Класс ObservableCollection
Интерфейсы IEnumerable и IEnumerator
Итераторы и оператор yield
Класс Array и массивы
Span
Индексы и диапазоны
Глава 11. Работа со строками
Строки и класс System.String
Операции со строками
Форматирование и интерполяция строк
Класс StringBuilder
Регулярные выражения
Глава 12. Работа с датами и временем
Структура DateTime
Форматирование дат и времени
DateOnly и TimeOnly
Глава 13. Дополнительные классы и структуры .NET
Отложенная инициализация и тип Lazy
Математические вычисления и класс Math
Преобразование типов и класс Convert
Глава 14. Многопоточность
Введение в многопоточность. Класс Thread
Создание потоков. Делегат ThreadStart
Потоки с параметрами и ParameterizedThreadStart
Синхронизация потоков
Мониторы
Класс AutoResetEvent
Мьютексы
Семафоры
Глава 15. Параллельное программирование и библиотека TPL
Задачи и класс Task
Работа с классом Task
Задачи продолжения
Класс Parallel
Отмена задач и параллельных операций. CancellationToken
Глава 16. Aсинхронное программирование. Task-based Asynchronous Pattern
Асинхронные методы, async и await
Возвращение результата из асинхронного метода
Последовательное и параллельное выполнение. Task.WhenAll и Task.WhenAny
Обработка ошибок в асинхронных методах
Асинхронные стримы
Глава 17. LINQ
Основы LINQ
Проекция данных
Фильтрация коллекции
Сортировка
Объединение, пересечение и разность коллекций
Агрегатные операции
Получение части коллекции
Группировка
Соединение коллекций
Проверка наличия и получение элементов
Отложенное и немедленное выполнение LINQ
Делегаты в запросах LINQ
Глава 18. Parallel LINQ
Введение в Parallel LINQ. Метод AsParallel
Метод AsOrdered
Обработка ошибок и отмена параллельных операции
Глава 19. Рефлексия
Введение в рефлексию. Класс System.Type
Применение рефлексии и исследование типов
Исследование методов и конструкторов с помощью рефлексии
Исследование полей и свойств с помощью рефлексии
Динамическая загрузка сборок и позднее связывание
Атрибуты в .NET
Глава 20. Dynamic Language Runtime
DLR в C#. Ключевое слово dynamic
DynamicObject и ExpandoObject
Использование IronPython в .NET
Глава 21. Сборка мусора, управление памятью и указатели
Сборщик мусора в C#
Финализируемые объекты. Метод Dispose
Конструкция using
Указатели
Указатели на структуры, члены классов и массивы
Глава 22. Работа с файловой системой
Работа с дисками
Работа с каталогами
Работа с файлами. Классы File и FileInfo
FileStream. Чтение и запись файла
Чтение и запись текстовых файлов. StreamReader и StreamWriter
Бинарные файлы. BinaryWriter и BinaryReader
Архивация и сжатие файлов
Глава 23. Работа с JSON
Сериализация в JSON. JsonSerializer
Глава 24. Работа с XML в C#
XML-Документы
Работа с XML с помощью классов System.Xml
Изменение XML-документа
XPath
Linq to Xml. Создание Xml-документа
Выборка элементов в LINQ to XML
Изменение XML-документа в LINQ to XML
Сериализация в XML. XmlSerializer
Глава 25. Процессы и домены приложения
Процессы
Домены приложений
AssemblyLoadContext и динамическая загрузка и выгрузка сборок
Глава 26. Публикация приложения
Native AOT
Глава 27. Что нового
Нововведения в C# 11
Нововведения в C# 12