Главный объектно-ориентированный язык разработки Microsoft .NET - C# 12 - делает шаг вперед, представляя свою последнюю предварительную версию. Эта предварительная версия несет на себе отпечаток целенаправленного обновления, которое значительно повышает эффективность опережающей компиляции (AOT) и облегчает доступ к встроенным массивам. Новые возможности, включенные в предварительную версию C# 12, выпущенную в составе Visual Studio 17.7 Preview 3 и .NET 8 Preview 6, направлены на повышение производительности в будущем.
Интересно, что в обновлении представлена инновационная экспериментальная функция под названием Interceptors. Эта функция позволяет генераторам упростить перенаправление кода и обеспечить контекстно-зависимую оптимизацию. Целью создания перехватчиков является поддержка сложных сценариев, особенно тех, которые требуют расширенной компиляции AOT. Поступив в продажу вместе с .NET 8, эта экспериментальная часть языка может претерпеть изменения или быть полностью удалена в будущем, что предостерегает пользователей от ее применения в производстве.
Атрибуты в перехватчиках указывают точное местоположение исходного кода. Поэтому они лучше подходят для генераторов исходных текстов. Несмотря на свою динамичность, перехватчики должны развиваться вместе с .NET 8 и к ноябрю этого года превратиться в полноценную версию C# 12.
В дополнение к перехватчикам в последней предварительной версии также обновлено выражение nameof. Это обновленное выражение может выдавать название типа переменной или ее члена в виде строковой константы, что расширяет его функциональность в широком спектре приложений. После обновления это ключевое слово теперь может прекрасно работать с инициализаторами, статическими членами, именами членов, а также внутри атрибутов.
Кроме того, в языке появилась функция InlineArrayAttribute, впервые представленная в предыдущей предварительной версии .NET 8. Эта функция, которую называют одной из самых передовых, в первую очередь служит компилятору, библиотекам .NET и другим библиотекам. Атрибут InlineArrayAttribute помогает определить тип, который может выступать в качестве непрерывной последовательности примитивов, обеспечивая эффективную, безопасную для типов, безопасную для прогона, индексируемую и разрезаемую последовательность данных.
Эта возможность используется библиотеками .NET для повышения производительности приложений путем выделения типа, который может рассматриваться как непрерывная последовательность примитивов. Это действие способствует созданию эффективных, безопасных для типов, безопасных при прогоне, индексируемых и разрезаемых на части встроенных данных.
Создание веб- или мобильных приложений может быть быстрым и простым с помощью таких платформ no-code, как AppMaster. Подобно .NET, она также позволяет генерировать приложения и предоставляет возможности для масштабирования, делая разработку в 10 раз быстрее и в 3 раза экономичнее. Для более детального понимания вы можете изучить наше руководство по no-code/low-code разработке приложений.