Какие новые возможности C# из последних версий вам понравились
Что проверяют
Работаете ли вы на актуальной версии языка или застряли на том, что было пять лет назад. Важно не число фич, а понимание, какую проблему решает каждая. Следом обычно просят показать код или назвать подводный камень выбранной возможности.
Как отвечать
Привяжите ответ к версиям: C# 14 вышел вместе с .NET 10 в ноябре 2025 года, это LTS-релиз, и новые проекты обычно начинают на нём. Назовите две-три вещи, которыми пользуетесь сами:
- C# 14: ключевое слово
fieldдля доступа к автогенерируемому полю свойства, так что ради одной проверки в сеттере больше не нужно ручное поле; блокиextensionс extension-свойствами и статическими членами; присваивание через?., напримерcustomer?.Order = order;nameof(List<>)для открытых обобщённых типов; - C# 13:
paramsдля любых коллекций, включаяReadOnlySpan<T>, без лишней аллокации массива; типSystem.Threading.Lockвместо блокировки наobject; частичные свойства; - C# 12: первичные конструкторы у классов, collection expressions
[1, 2, 3]и оператор распаковки..; - C# 11: raw string literals, члены с
required, списковые шаблоны[first, .., last], статические абстрактные члены интерфейсов для обобщённой математики.
Для каждой фичи хватит фразы про пользу и фразы про ограничение. Если проект сидит на .NET 8 или ещё на .NET Framework и новые версии вы не трогали, так и скажите, но покажите, что знаете, что в них изменилось и чего вам не хватает.
Где спотыкаются
Называют новинками records, IAsyncEnumerable и инициализаторы объектов. Это C# 9, C# 8 и C# 3, такой ответ выдаёт отставание на годы.
Не знают подвоха первичных конструкторов: их параметры не readonly-поля, а захваченные изменяемые переменные, и их можно случайно переприсвоить внутри класса.
Считают, что with у record делает глубокую копию. Копия поверхностная: вложенный список остаётся общим для обеих записей, а сравнение по значению для массива внутри записи сравнивает только ссылки.