Start Debugging

Возможности C# 14

Что на самом деле вошло в C# 14, с кодом.

Эта подборка собирает всё, что я писал о возможностях языка C# 14: union-типы, partial-конструкторы и события, extension-типы и мелкие эргономические улучшения, которые легко пропустить в официальных release notes.

С чего начать

Если вы переходите с C# 12, начните со статей об union-типах и partial-членах - это самые заметные изменения поведения. Остальное - улучшения удобства.

Что на этой странице

Список ниже автоматически собирает статьи с любым из тегов: c# 14, csharp 14, c#, csharp, c# language. Сначала самые новые.

Указатель (138 статей)

2026 / 05

2026 / 04

2026 / 02

2026 / 01

2025 / 04

2025 / 01

2024 / 12

  • Что нового в C# 14.0

    Обзор всех новых возможностей C# 14.0, включая ключевое слово field, члены расширения, null-условное присваивание, неявные преобразования span и многое другое.

  • История версий языка C#

    Эволюция C# превратила его в современный высокопроизводительный язык. Это руководство отслеживает каждую важную веху. Ранние годы (C# 1.0 - 1.2). C# был выпущен в 2002 году как основной язык для .NET Framework. Он напоминал Java, но с фокусом на разработке под Windows. Версия 1.2 появилась вскоре после с небольшими...

2023 / 11

2023 / 10

  • C# Как помечать функциональность как экспериментальную

    Начиная с C# 12, новый ExperimentalAttribute позволяет помечать типы, методы, свойства или сборки как экспериментальные. Узнайте, как использовать его с diagnosticId, pragma-тегами и UrlFormat.

  • C# параметры ref readonly

    Модификатор ref readonly в C# даёт более прозрачный способ передавать ссылки только для чтения. Узнайте, как он улучшает модификатор in за счёт более чётких ограничений и видимости для вызывающей стороны.

  • C# как перемешать массив?

    Самый простой способ перемешать массив в C# — использовать Random.Shuffle, появившийся в .NET 8. Метод работает in-place как с массивами, так и со спанами.

  • C# Что такое NullReferenceException и как её исправить?

    Узнайте, что вызывает NullReferenceException в C#, как её отлаживать и как предотвращать с помощью проверок на null, оператора null-conditional и ссылочных типов, допускающих null.

  • Добавление/удаление TypeInfoResolver у существующих JsonSerializerOptions

    Узнайте, как добавлять или удалять экземпляры TypeInfoResolver у существующих JsonSerializerOptions с помощью нового свойства TypeInfoResolverChain в .NET 8.

  • C# 12 Interceptors

    Знакомимся с interceptors из C# 12 — экспериментальной возможностью компилятора в .NET 8, позволяющей подменять вызовы методов на этапе компиляции с помощью атрибута InterceptsLocation.

2023 / 09

2023 / 08

  • C# 12 Inline arrays

    Inline arrays позволяют создать массив фиксированного размера внутри struct. Такая структура с inline-буфером по производительности сравнима с unsafe fixed size buffer. Inline arrays в первую очередь рассчитаны на команду runtime и некоторых авторов библиотек для улучшения производительности в определённых сценариях. Скорее всего...

  • C# 12 collection expressions

    C# 12 вводит новый упрощённый синтаксис создания массивов. Выглядит он так: Важно: тип массива должен быть указан явно, поэтому использовать var для объявления переменной нельзя. Аналогично, чтобы создать Span<int>, можно сделать так: Многомерные массивы Преимущества этого лаконичного синтаксиса...

  • C# Как дождаться завершения процесса?

    Дождаться завершения процесса можно с помощью метода WaitForExit. Ваш код синхронно подождёт, пока процесс завершится, и затем продолжит выполнение. Рассмотрим пример: Этот код запустит новый процесс cmd.exe и выполнит команду timeout 5. Вызов process.WaitForExit() заставит вашу программу...

  • C# 12 alias для любых типов

    Директива using alias в C# 12 стала более гибкой и теперь позволяет создавать алиасы для любых типов, а не только для именованных. Это значит, что вы можете создавать алиасы для tuples, указателей, массивов, обобщённых типов и т. д. Вместо полной структурной формы tuple теперь можно дать короткий описательный алиас...

  • Есть ли в C# аналог инструкции With...End With?

    Инструкция With...End With в VB позволяет выполнять серию операторов, которые многократно обращаются к одному объекту, используя упрощённый синтаксис доступа к его членам. Есть ли аналог в C#? Нет. Ближайший аналог - инициализаторы объектов, но они работают только при создании новых экземпляров.

2023 / 07

  • C# 12 - Первичные конструкторы

    Начиная с C# 12, можно объявлять первичный конструктор внутри классов и структур. Параметры размещаются в скобках сразу после имени типа. Они имеют широкую область видимости: могут инициализировать свойства или поля, использоваться как переменные в методах и локальных функциях, а также передаваться в базовый конструктор.

2023 / 06

  • Как начать программировать на C#

    Руководство для начинающих по началу программирования на C#: от установки Visual Studio до написания первой программы и поиска ресурсов для обучения.

  • Как перейти на C# 12

    Исправьте ошибки версии языка C# 12, обновив target framework до .NET 8 или указав LangVersion в файле .csproj.

  • Что нового в C# 12

    Обзор новых возможностей C# 12: первичные конструкторы, параметры лямбда по умолчанию, выражения коллекций, inline arrays и многое другое.

2023 / 05

2023 / 03

2020 / 11

2020 / 05

  • C# using var (using-объявление)

    Используйте using-объявления C# 8 (`using var`) для освобождения объектов IDisposable без вложенных фигурных скобок. Синтаксис, правила области видимости и когда лучше использовать блок `using`.

2020 / 04

2019 / 01

2013 / 10

2013 / 06

2013 / 05

2012 / 01

Все подборки Главная