Высший учебник C# 14 и .NET 10 LTS
Регулярные выражения
Введение
Операторы повторения
Группирующие скобки
Экранировка спецсимволов
Фигурные скобки
Ограничение жадности
Группы символов
Наборы символов
Инвертирование наборов
Особенности кириллицы
Спецсимволы внутри наборов
Группы символов внутри наборов
Спецсимволы-исключения в наборах
Символ шляпки внутри наборов
Особенности дефиса внутри наборов
Начало и конец строки
Граница слов
Многострочность
Команда или
Незахватывающие группы
Просмотр вперёд и назад
Флаги в строке
RegexOptions
Поиск совпадения
Позиция найденного
Группы при поиске
Группы в шаблоне
Все группы списком
Именованные группы
Группы в строке замены
Доллар в строке замены
Список совпадений
Группы во всех совпадениях
Перебор совпадений
Группы при переборе
Именованные группы при переборе
Полное совпадение
Группы при полном совпадении
Совпадение с начала строки
Группы при совпадении с начала
Замена совпадений
Замена первого совпадения
Разбиение строки
Обобщённые типы
Введение
Обобщённый метод
Вывод аргумента типа
Явный аргумент типа
Обобщённый класс
Обобщённый интерфейс
Несколько параметров типа
Значение default(T)
Ограничение базовым классом
Ограничение интерфейсом
Ограничение class
Ограничение class?
Ограничение struct
Ограничение notnull
Ограничение new()
Ограничение unmanaged
Несколько ограничений
Ковариантность out
Контравариантность in
Вариативность делегатов
Перечисление и генераторы
Введение
IEnumerable
IEnumerator
Связь с foreach
Ручной перечислитель
yield return
yield break
Ленивое выполнение
Повторный перебор
Материализация
Собственная последовательность
Метод-расширение последовательности
Стек, очередь и связанные коллекции
Введение
Добавление в стек
Снятие со стека
Просмотр вершины стека
Постановка в очередь
Извлечение из очереди
Просмотр начала очереди
Узлы LinkedList
Начало и конец списка
Вставка в LinkedList
Удаление из LinkedList
Перебор LinkedList
PriorityQueue
Своё правило приоритета
SortedSet
SortedDictionary
Сравнение и правила равенства
Введение
IComparable
CompareTo
Естественный порядок
Comparison
IComparer
Отдельный comparer
Comparer.Default
IEquatable
EqualityComparer
Пользовательский equality
StringComparison
Согласование с GetHashCode
Неизменяемые и замороженные коллекции
Введение
ImmutableArray
ImmutableList
Новая версия после изменения
Builder
ImmutableDictionary
ImmutableHashSet
FrozenDictionary
FrozenSet
Построение frozen
Чтение и поиск
Выбор типа коллекции
Кортежи, деконструкция, индексы и диапазоны
Введение
Литерал кортежа
Именованные элементы
Возврат нескольких значений
Сравнение кортежей
Деконструкция
Пропуск элемента
Метод Deconstruct
Тип Index
Индекс с конца
Тип Range
Открытые границы
Срез массива
Срез строки
Расширенное сопоставление с образцом
Введение
Switch-выражение
Образец константы
Сравнительный образец
Логические and, or и not
Образец свойства
Вложенное свойство
Позиционный образец
Образец списка
var и discard
Охранное when
Комбинирование образцов
Продвинутые возможности типов
Введение
protected internal
private protected
Явная реализация интерфейса
Реализация интерфейса по умолчанию
Статический член интерфейса
Статический абстрактный член
Ковариантный результат override
Primary constructor класса
Primary constructor структуры
record struct
Неявное преобразование
Явное преобразование
Частичный метод
Частичное свойство
Автосвойство с field
Extension block C# 14
Присваивание через ?.
Углублённый LINQ
Введение
Отложенное выполнение
Изменение источника до перебора
Повторное выполнение
Синтаксис запросов
join
GroupJoin
Левое соединение
ToLookup
Zip
Aggregate
Cast
OfType
DefaultIfEmpty
DistinctBy
MinBy и MaxBy
Chunk
CountBy
AggregateBy
Index
Пользовательский comparer
Построение и форматирование текста
Введение
StringBuilder
Append
AppendLine
Длина и ёмкость
Вставка и удаление
Очистка
Получение строки
Составное форматирование
Ширина и выравнивание
Форматы чисел
Форматы даты
CultureInfo
IFormattable
ISpanFormattable и TryFormat
Разбор чисел
NumberStyles
ParseExact и TryParseExact
Числа и биты
Введение
BigInteger
Арифметика больших чисел
НОД и степень
Криптографический случайный выбор
BitOperations
Подсчёт единичных битов
Ведущие и хвостовые нули
Циклический сдвиг
Порядок байтов
BitConverter
checked и unchecked
Продвинутая работа со временем
Введение
DateOnly
TimeOnly
Сборка DateTime
DateTimeOffset
Unix-время
Смещение
TimeZoneInfo
Перевод пояса
Неоднозначное время
Stopwatch
Измерение участка
Продвинутая файловая система
Введение
FileInfo
DirectoryInfo
Ленивый перебор
Рекурсивный обход
Атрибуты файла
Время изменения
Относительный путь
Полный путь
Временный файл
FileSystemWatcher
Условная компиляция и директивы
Атрибуты
Введение
Obsolete
Свой атрибут
Аргументы атрибута
AttributeUsage
Цель атрибута
Наследование
AllowMultiple
Conditional
Caller info
Nullable-аннотации
Члены и параметры
Рефлексия
Введение
typeof
GetType
Объект Type
Имя и namespace
База и интерфейсы
Свойства
Методы
Конструкторы
Параметры
BindingFlags
GetValue и SetValue
Invoke
Activator
Чтение атрибута
Открытый generic
Закрытый generic
Span, Memory и буферы
Введение
Span над массивом
Срез Span
Индексатор Span
ReadOnlySpan
Строка и Span
Memory
Memory и Span
stackalloc
ref struct
scoped
ref readonly
CopyTo и Fill
Байты в Span
ArrayPool
Rent и Return
Потоки ввода-вывода
Введение
Базовый поток
Файловый поток
Режим доступа
Освобождение потока
Чтение и запись байтов
Позиция и длина
Смещение в потоке
Копирование потока
Точное чтение
Поток в памяти
Текстовое чтение
Текстовая запись
Кодировка текста
Двоичное чтение
Двоичная запись
Буферизация
Ошибка ввода-вывода
JSON
Введение
Объект в JSON
JSON в объект
Вложенный объект
Список в JSON
Имя свойства
Пропуск свойства
Обязательное свойство
Значение по умолчанию
Настройки сериализатора
Регистр имён
Record как DTO
JsonDocument
Объект без DTO
Неверный JSON
JSON в потоке
JSON в файле
Асинхронность
Введение
Задача и поток
Task.Run
async
await
Task с результатом
Свойство Result
Task.Delay
Task.WhenAll
Task.WhenAny
Task.WhenEach
Исключение в async
CancellationToken
CancellationTokenSource
Проверка отмены
CancelAfter
Связанный токен
Callback отмены
ConfigureAwait
ValueTask
TaskCompletionSource
Опасность async void
IAsyncEnumerable
await foreach
Async iterator
Отмена async iterator
IAsyncDisposable
await using
Многопоточность и обмен данными
Введение
Класс Thread
Запуск потока
Join
Идентификатор потока
Фоновый поток
ThreadPool
Гонка данных
lock
System.Threading.Lock
Monitor
Ожидание условия
Pulse
PulseAll
Interlocked
CompareExchange
Volatile
SemaphoreSlim
Reset events
ReaderWriterLockSlim
Parallel.For
Parallel.ForEach
Parallel.ForEachAsync
ConcurrentDictionary
ConcurrentQueue
ConcurrentStack
ConcurrentBag
Unbounded channel
Bounded channel
ChannelWriter и Reader
Завершение канала
ReadAllAsync
Producer-consumer
Сборки, проекты и пакеты
Введение
Сборка и проект
Файл csproj
Target framework
Ссылка на проект
Зависимость сборок
Публичный API
NuGet-пакет
Добавление пакета
Удаление пакета
Версия пакета
Восстановление
Локальный пакет
Условная секция
База данных SQLite
Введение
Пакет Microsoft.Data.Sqlite
Строка подключения
Открытие соединения
Команда SQL
Создание таблицы
Вставка строки
Выборка SELECT
Чтение строки
Параметры запроса
Условие WHERE
Одна строка
Пустой результат
Выбор столбцов
Изменение UPDATE
Удаление DELETE
Сортировка ORDER BY
Ограничение LIMIT
Агрегаты
Группировка GROUP BY
NULL
Транзакция
Откат
Ошибка SQL
Связи таблиц
Связывание таблиц
Внешний ключ
Один ко многим
Получение данных из связанных таблиц
Выборка связанных
Запись без пары
Цепочка связанных таблиц
Связывание через таблицу связи
Выборка через связь
Удаление связанных данных
XML
Введение
Элемент XElement
Текст тега
Атрибут
Группа тегов
Вложенный тег
Атрибуты группы
Группа с вложенностью
Имя с дефисом
Документ XDocument
Сборка документа
Поиск элемента
Изменение
Удаление
Файл XML
Неверный XML
HTTP-запросы
Введение
HttpClient
Запрос GET
Тело ответа
Код статуса
Успешный ответ
Параметры адреса
Заголовки запроса
Заголовки ответа
Запрос POST
JSON-тело POST
Запрос PUT
Запрос DELETE
Переход по редиректу
Таймаут
Отмена
Поток ответа
Ошибка HTTP
Запросы к API
Введение
Разбор тела
Один ресурс
Список
Идентификатор в пути
Query-параметры
Отправка JSON
Ключ доступа
Пагинация
Ошибочный ответ
DTO ответа
Класс клиента
TCP-сокеты
Введение
TCP-клиент
TCP-сервер
Сетевой поток
Обмен в одном запуске
Несколько сообщений
Границы сообщения
Таймаут и отмена
Несколько клиентов
UDP
Введение
Датаграмма
UdpClient
Отправка пакета
Прием пакета
Ответ отправителю
Обмен в одном запуске
Несколько пакетов
Таймаут и отмена
UDP и TCP