C# 14 и .NET 10: от поверхностного знания к рабочему (Extended)
Курс для программистов, которые C# «в целом знают», но на код-ревью и на собеседовании проваливаются на вопросах «почему так, а не иначе». Язык разбирается не как список конструкций, а как набор решений с ценой: значимые и ссылочные типы, память и сборщик мусора, равенство, null, сопоставление с образцом, строки и Span, обобщения, коллекции, LINQ, исключения, async и конкурентность, данные на границе процесса, рефлексия и генераторы кода. Затем пять юнитов на SOLID — каждый принцип как ответ на конкретную боль, а не как лозунг. Затем паттерны проектирования — порождающие, структурные, поведенческие и прикладные паттерны .NET — с обязательным разбором, когда паттерн вредит. Финал — тестируемость, разговор об архитектуре вслух и обзор нового в C# 13 и 14. Необязательная ветка «C# в приложении» доводит язык до работающего сервиса: хост и DI, Minimal API, HttpClient и фоновые задачи, EF Core, тесты, выпуск в Azure. Все примеры — в одной системе, бэкенде ENGAGE вымышленной компании Aldervane. C# 14 / .NET 10 LTS.
Ihre Lektion ist in Ihrer Sprache: Ihr Assistent leitet sie.
- Material: Russisch
- Prüfung: Russisch – wird auf der Website abgelegt, nicht übersetzt
So funktioniert’s
Ihr Assistent holt das Kursmaterial von unserem Server und leitet die Lektion in Ihrer Sprache.
Die Prüfung wird auf der Website abgelegt, ohne Assistenten. Prüfungsfragen werden nicht übersetzt: Das ist für jeden Kurs so festgelegt.
Weg durch den Kurs
· 38 Einheitenfreie Reihenfolge · die Stufen unten sind die vom Autor vorgeschlagene Reihenfolge, keine BedingungAnsicht: Karte · Stufen
Stufe 1
~2 Std.
Stufe 2
~2 Std.
2 · laut Plan des Autors nach „Что на самом деле происходит, когда вы жмёте F5“
Значимые и ссылочные типы: стек, куча и упаковка
~2 Std.
Stufe 3
~5,5 Std.
laut Plan des Autors nach „Значимые и ссылочные типы: стек, куча и упаковка“
Stufe 4
~7,5 Std.
5 · laut Plan des Autors nach „class, struct, record: чем объявлять данные“
Равенство, хеш и сравнение: контракт, который легко нарушить
~2 Std.
6 · laut Plan des Autors nach „class, struct, record: чем объявлять данные“
null: nullable-типы, ссылочная нулевая аннотация и что с этим делать
~1,5 Std.
28 · laut Plan des Autors nach einer beliebigen davon: „Значимые и ссылочные типы: стек, куча и упаковка“, „Строки: неизменяемость, интернирование, StringBuilder, Span“
Span, Memory, ref struct и как мерить
~2 Std.
8 · laut Plan des Autors nach „class, struct, record: чем объявлять данные“
Инкапсуляция и конструирование: объект, который нельзя собрать неправильно
~2 Std.
Stufe 5
~8 Std.
27 · laut Plan des Autors nach einer beliebigen davon: „class, struct, record: чем объявлять данные“, „null: nullable-типы, ссылочная нулевая аннотация и что с этим делать“
Сопоставление с образцом, кортежи, деконструкция
~2 Std.
9 · laut Plan des Autors nach „Инкапсуляция и конструирование: объект, который нельзя собрать неправильно“
Наследование и полиморфизм: virtual, override, new, sealed
~2 Std.
11 · laut Plan des Autors nach „Инкапсуляция и конструирование: объект, который нельзя собрать неправильно“
Делегаты, лямбды, замыкания, события
~2 Std.
15 · laut Plan des Autors nach „Инкапсуляция и конструирование: объект, который нельзя собрать неправильно“
Исключения: чем они являются и чем не являются
~2 Std.
Stufe 6
~4 Std.
10 · laut Plan des Autors nach „Наследование и полиморфизм: virtual, override, new, sealed“
Интерфейсы: контракт, явная реализация, DIM
~1,5 Std.
16 · laut Plan des Autors nach „Делегаты, лямбды, замыкания, события“
async/await: что это и чего это не
~2,5 Std.
Stufe 7
~8 Std.
12 · laut Plan des Autors nach „Интерфейсы: контракт, явная реализация, DIM“
Обобщения: ограничения, реификация, вариантность
~2 Std.
30 · laut Plan des Autors nach einer beliebigen davon: „Исключения: чем они являются и чем не являются“, „async/await: что это и чего это не“
Данные на границе: JSON, файлы и потоки, даты и время
~2 Std.
29 · laut Plan des Autors nach „async/await: что это и чего это не“
Конкурентность: lock, Lock, Interlocked, SemaphoreSlim, Channel, Parallel
~2 Std.
17 · laut Plan des Autors nach „Интерфейсы: контракт, явная реализация, DIM“
SRP: одна причина для изменения
~2 Std.
Stufe 8
~6 Std.
31 · laut Plan des Autors nach einer beliebigen davon: „Что на самом деле происходит, когда вы жмёте F5“, „Обобщения: ограничения, реификация, вариантность“
Метаданные: рефлексия, атрибуты, генераторы кода
~2 Std.
13 · laut Plan des Autors nach „Обобщения: ограничения, реификация, вариантность“
Коллекции: выбор структуры данных и её цена
~2 Std.
18 · laut Plan des Autors nach „SRP: одна причина для изменения“
OCP: открыт для расширения, закрыт для изменения
~2 Std.
Stufe 9
~4 Std.
14 · laut Plan des Autors nach „Коллекции: выбор структуры данных и её цена“
LINQ: отложенное выполнение, yield, IQueryable
~2 Std.
19 · laut Plan des Autors nach „OCP: открыт для расширения, закрыт для изменения“
LSP: подтип обязан быть заменяемым
~2 Std.
Stufe 10
~1,5 Std.
20 · laut Plan des Autors nach „LSP: подтип обязан быть заменяемым“
ISP: клиента не заставляют зависеть от лишнего
~1,5 Std.
Stufe 11
~2,5 Std.
21 · laut Plan des Autors nach „ISP: клиента не заставляют зависеть от лишнего“
~2,5 Std.
Stufe 12
~8 Std.
22 · laut Plan des Autors nach „DIP и внедрение зависимостей“
Порождающие паттерны: кто и как создаёт объекты
~2 Std.
23 · laut Plan des Autors nach „DIP и внедрение зависимостей“
Структурные паттерны: как собирать объекты в целое
~2 Std.
24 · laut Plan des Autors nach „DIP и внедрение зависимостей“, „Делегаты, лямбды, замыкания, события“
Поведенческие паттерны: кто кого вызывает и когда
~2 Std.
33 · C# в приложении · laut Plan des Autors nach „DIP и внедрение зависимостей“
Хост, DI на практике, конфигурация, логирование
~2 Std.
Stufe 13
~8 Std.
25 · laut Plan des Autors nach 2 davon: „Порождающие паттерны: кто и как создаёт объекты“, „Структурные паттерны: как собирать объекты в целое“, „Поведенческие паттерны: кто кого вызывает и когда“
Прикладные паттерны .NET: Repository, Options, CQRS, Result
~2 Std.
34 · C# в приложении · laut Plan des Autors nach „Хост, DI на практике, конфигурация, логирование“
Minimal API: конвейер, привязка, валидация, ошибки
~2 Std.
35 · C# в приложении · laut Plan des Autors nach „Хост, DI на практике, конфигурация, логирование“, „async/await: что это и чего это не“
HttpClient, устойчивость и фоновые задачи
~2 Std.
36 · C# в приложении · laut Plan des Autors nach „Хост, DI на практике, конфигурация, логирование“, „LINQ: отложенное выполнение, yield, IQueryable“
~2 Std.
Stufe 14
~4,5 Std.
26 · laut Plan des Autors nach „Прикладные паттерны .NET: Repository, Options, CQRS, Result“, „async/await: что это и чего это не“
Финал: тестируемость и разговор об архитектуре вслух
~2,5 Std.
38 · C# в приложении · laut Plan des Autors nach „Minimal API: конвейер, привязка, валидация, ошибки“
Выпуск в Azure: App Service, секреты, managed identity
~2 Std.
Stufe 15
~4 Std.
32 · laut Plan des Autors nach „Финал: тестируемость и разговор об архитектуре вслух“
Что нового в C# 13 и 14 и как об этом спрашивают
~2 Std.
37 · C# в приложении · laut Plan des Autors nach „Хост, DI на практике, конфигурация, логирование“, „Финал: тестируемость и разговор об архитектуре вслух“
Тесты сервиса: от модуля до HTTP
~2 Std.
Prüfung
gesperrt · in den Kurs einschreiben
Abschluss · im Browser, ohne den Assistenten
Prüfung
Der Weg in Worten
- Stufe 1 · Что на самом деле происходит, когда вы жмёте F5 — ~2 Std.
- Stufe 2 · Значимые и ссылочные типы: стек, куча и упаковка — laut Plan des Autors nach „Что на самом деле происходит, когда вы жмёте F5“; ~2 Std.
- Stufe 3 · Память и время жизни: сборщик мусора, IDisposable, using — laut Plan des Autors nach „Значимые и ссылочные типы: стек, куча и упаковка“; ~2 Std.
- Stufe 3 · class, struct, record: чем объявлять данные — laut Plan des Autors nach „Значимые и ссылочные типы: стек, куча и упаковка“; ~2 Std.
- Stufe 3 · Строки: неизменяемость, интернирование, StringBuilder, Span — laut Plan des Autors nach „Значимые и ссылочные типы: стек, куча и упаковка“; ~1,5 Std.
- Stufe 4 · Равенство, хеш и сравнение: контракт, который легко нарушить — laut Plan des Autors nach „class, struct, record: чем объявлять данные“; ~2 Std.
- Stufe 4 · null: nullable-типы, ссылочная нулевая аннотация и что с этим делать — laut Plan des Autors nach „class, struct, record: чем объявлять данные“; ~1,5 Std.
- Stufe 4 · Span, Memory, ref struct и как мерить — laut Plan des Autors nach einer beliebigen davon: „Значимые и ссылочные типы: стек, куча и упаковка“, „Строки: неизменяемость, интернирование, StringBuilder, Span“; ~2 Std.
- Stufe 4 · Инкапсуляция и конструирование: объект, который нельзя собрать неправильно — laut Plan des Autors nach „class, struct, record: чем объявлять данные“; ~2 Std.
- Stufe 5 · Сопоставление с образцом, кортежи, деконструкция — laut Plan des Autors nach einer beliebigen davon: „class, struct, record: чем объявлять данные“, „null: nullable-типы, ссылочная нулевая аннотация и что с этим делать“; ~2 Std.
- Stufe 5 · Наследование и полиморфизм: virtual, override, new, sealed — laut Plan des Autors nach „Инкапсуляция и конструирование: объект, который нельзя собрать неправильно“; ~2 Std.
- Stufe 5 · Делегаты, лямбды, замыкания, события — laut Plan des Autors nach „Инкапсуляция и конструирование: объект, который нельзя собрать неправильно“; ~2 Std.
- Stufe 5 · Исключения: чем они являются и чем не являются — laut Plan des Autors nach „Инкапсуляция и конструирование: объект, который нельзя собрать неправильно“; ~2 Std.
- Stufe 6 · Интерфейсы: контракт, явная реализация, DIM — laut Plan des Autors nach „Наследование и полиморфизм: virtual, override, new, sealed“; ~1,5 Std.
- Stufe 6 · async/await: что это и чего это не — laut Plan des Autors nach „Делегаты, лямбды, замыкания, события“; ~2,5 Std.
- Stufe 7 · Обобщения: ограничения, реификация, вариантность — laut Plan des Autors nach „Интерфейсы: контракт, явная реализация, DIM“; ~2 Std.
- Stufe 7 · Данные на границе: JSON, файлы и потоки, даты и время — laut Plan des Autors nach einer beliebigen davon: „Исключения: чем они являются и чем не являются“, „async/await: что это и чего это не“; ~2 Std.
- Stufe 7 · Конкурентность: lock, Lock, Interlocked, SemaphoreSlim, Channel, Parallel — laut Plan des Autors nach „async/await: что это и чего это не“; ~2 Std.
- Stufe 7 · SRP: одна причина для изменения — laut Plan des Autors nach „Интерфейсы: контракт, явная реализация, DIM“; ~2 Std.
- Stufe 8 · Метаданные: рефлексия, атрибуты, генераторы кода — laut Plan des Autors nach einer beliebigen davon: „Что на самом деле происходит, когда вы жмёте F5“, „Обобщения: ограничения, реификация, вариантность“; ~2 Std.
- Stufe 8 · Коллекции: выбор структуры данных и её цена — laut Plan des Autors nach „Обобщения: ограничения, реификация, вариантность“; ~2 Std.
- Stufe 8 · OCP: открыт для расширения, закрыт для изменения — laut Plan des Autors nach „SRP: одна причина для изменения“; ~2 Std.
- Stufe 9 · LINQ: отложенное выполнение, yield, IQueryable — laut Plan des Autors nach „Коллекции: выбор структуры данных и её цена“; ~2 Std.
- Stufe 9 · LSP: подтип обязан быть заменяемым — laut Plan des Autors nach „OCP: открыт для расширения, закрыт для изменения“; ~2 Std.
- Stufe 10 · ISP: клиента не заставляют зависеть от лишнего — laut Plan des Autors nach „LSP: подтип обязан быть заменяемым“; ~1,5 Std.
- Stufe 11 · DIP и внедрение зависимостей — laut Plan des Autors nach „ISP: клиента не заставляют зависеть от лишнего“; ~2,5 Std.
- Stufe 12 · Порождающие паттерны: кто и как создаёт объекты — laut Plan des Autors nach „DIP и внедрение зависимостей“; ~2 Std.
- Stufe 12 · Структурные паттерны: как собирать объекты в целое — laut Plan des Autors nach „DIP и внедрение зависимостей“; ~2 Std.
- Stufe 12 · Поведенческие паттерны: кто кого вызывает и когда — laut Plan des Autors nach „DIP и внедрение зависимостей“, „Делегаты, лямбды, замыкания, события“; ~2 Std.
- Stufe 12 · Хост, DI на практике, конфигурация, логирование — laut Plan des Autors nach „DIP и внедрение зависимостей“; optional; ~2 Std.
- Stufe 13 · Прикладные паттерны .NET: Repository, Options, CQRS, Result — laut Plan des Autors nach 2 davon: „Порождающие паттерны: кто и как создаёт объекты“, „Структурные паттерны: как собирать объекты в целое“, „Поведенческие паттерны: кто кого вызывает и когда“; ~2 Std.
- Stufe 13 · Minimal API: конвейер, привязка, валидация, ошибки — laut Plan des Autors nach „Хост, DI на практике, конфигурация, логирование“; optional; ~2 Std.
- Stufe 13 · HttpClient, устойчивость и фоновые задачи — laut Plan des Autors nach „Хост, DI на практике, конфигурация, логирование“, „async/await: что это и чего это не“; optional; ~2 Std.
- Stufe 13 · EF Core без иллюзий — laut Plan des Autors nach „Хост, DI на практике, конфигурация, логирование“, „LINQ: отложенное выполнение, yield, IQueryable“; optional; ~2 Std.
- Stufe 14 · Финал: тестируемость и разговор об архитектуре вслух — laut Plan des Autors nach „Прикладные паттерны .NET: Repository, Options, CQRS, Result“, „async/await: что это и чего это не“; ~2,5 Std.
- Stufe 14 · Выпуск в Azure: App Service, секреты, managed identity — laut Plan des Autors nach „Minimal API: конвейер, привязка, валидация, ошибки“; optional; ~2 Std.
- Stufe 15 · Что нового в C# 13 и 14 и как об этом спрашивают — laut Plan des Autors nach „Финал: тестируемость и разговор об архитектуре вслух“; ~2 Std.
- Stufe 15 · Тесты сервиса: от модуля до HTTP — laut Plan des Autors nach „Хост, DI на практике, конфигурация, логирование“, „Финал: тестируемость и разговор об архитектуре вслух“; optional; ~2 Std.
Lehrplan · 38 Einheiten
| 1 | Что на самом деле происходит, когда вы жмёте F5 Описать путь от исходника до машинного кода: Roslyn → IL и метаданные → JIT (tier0 → tier1) → машинный код, и что меняют Debug и Release | ~2 Std. |
| 2 | Значимые и ссылочные типы: стек, куча и упаковка Предсказывать поведение кода при присваивании и передаче в метод для значимых и ссылочных типов, включая структуры в коллекциях и кортежи | ~2 Std. |
| 3 | Память и время жизни: сборщик мусора, IDisposable, using Объяснить поколенческую сборку и почему её цена определяется выжившими, а не мёртвыми объектами | ~2 Std. |
| 4 | class, struct, record: чем объявлять данные Выбирать между class, struct, record class, record struct и readonly record struct по вопросу «значение или сущность», а не по привычке | ~2 Std. |
| 5 | Равенство, хеш и сравнение: контракт, который легко нарушить Предсказывать, что сравнивает == и что сравнивает Equals, по статическому и настоящему типу | ~2 Std. |
| 6 | null: nullable-типы, ссылочная нулевая аннотация и что с этим делать Различать Nullable<T> и nullable reference types: что делает компилятор, что делает рантайм (особая упаковка) и что не делает никто | ~1,5 Std. |
| 7 | Сопоставление с образцом, кортежи, деконструкция Переписывать цепочки if/else с is и приведениями в switch-выражение и объяснять, почему порядок веток — часть смысла | ~2 Std. |
| 8 | Span, Memory, ref struct и как мерить Объяснять, что такое Span<T> и ReadOnlySpan<T>, и предсказывать, где срез даёт окно, а где копию | ~2 Std. |
