В версии C# 7, выпущенной вместе с .NET 4.7 в марте 2017 года, были введены дополнительные средства для упрощения кодовой базы и добавлено несколько более значительных средств (вроде кортежей и ссылочных локальных переменных, а также возвращаемых ссылочных значений), которые разработчики просили включить довольно долгое время. Вот краткий обзор новых средств C# 7.
• Объявление переменных out
как встраиваемых аргументов.
• Локальные функции.
• Дополнительные члены, сжатые до выражений.
• Обобщенные асинхронные возвращаемые типы.
• Новые маркеры для улучшения читабельности числовых констант.
• Легковесные неименованные типы (называемые кортежами), которые содержат множество полей.
• Обновления логического потока с применением сопоставления с типом вдобавок к проверке значений (сопоставлению с образцом).
• Возвращение ссылки на значение вместо только самого значения (ссылочные локальные переменные и возвращаемые ссылочные значения).
• Введение легковесных одноразовых переменных (называется отбрасыванием).
• Выражения throw
, позволяющие размещать конструкцию throw
в большем числе мест — в условных выражениях, лямбда-выражениях и др.
С версией C# 7 связаны два младших выпуска, которые добавили следующие средства.
• Возможность иметь асинхронный метод Main
программы.
• Новый литерал default
, который делает возможной инициализацию любого типа.
• Устранение проблемы при сопоставлении с образцом, которая препятствовала использованию обобщений в этом новом средстве сопоставления с образцом.
• Подобно анонимным методам имена кортежей могут выводиться из проекции, которая их создает.
• Приемы для написания безопасного и эффективного кода, сочетание синтаксических улучшений, которые позволяют работать с типами значений, применяя ссылочную семантику.
• За именованными аргументами могут следовать позиционные аргументы.
• Числовые литералы теперь могут иметь ведущие символы подчеркивания перед любыми печатаемыми цифрами.
• Модификатор доступа private protected
делает возможным доступ для производных классов в той же самой сборке.
• Результатом условного выражения (?:
) теперь может быть ссылка.
Кроме того, в этом издании книги к заголовкам разделов добавляются указания "(нововведение в версии 7.x)" и "(обновление в версии 7.x)", чтобы облегчить поиск изменений в языке по сравнению с предыдущей версией. Буква "х" означает младшую версию C# 7, такую как 7.1.
В версии C# 8, ставшей доступной 23 сентября 2019 года в рамках .NET Core 3.0, были введены дополнительные средства для упрощения кодовой базы и добавлен ряд более значимых средств (вроде кортежей, а также ссылочных локальных переменных и возвращаемых значений), которые разработчики просили включить в спецификацию языка в течение довольно долгого времени.
Версия C# 8 имеет два младших выпуска, которые добавили следующие средства:
• члены, допускающие только чтение, для структур:
• стандартные члены интерфейса;
• улучшения сопоставления с образцом;
• использование объявлений;
• статические локальные функции;
• освобождаемые ссылочные структуры;
• ссылочные типы, допускающие значение null
;
• асинхронные потоки;
• индексы и диапазоны;
• присваивание с объединением с null
;
• неуправляемые сконструированные типы;
• применение stackalloc
во вложенных выражениях;
• усовершенствование интерполированных дословных строк.
Новые средства в C# 8 обозначаются как "(нововведение в версии 8)" в заголовках разделов, которые им посвящены, а обновленные средства помечаются как "(обновление в версии 8.0)".
Новые средства в C# 9
В версию C# 9, выпущенную 10 ноября 2020 года в составе .NET 5, добавлены следующие средства:
• записи;
• средства доступа только для инициализации;
• операторы верхнего уровня;
• улучшения сопоставления с образцом;
• улучшения производительности для взаимодействия;
• средства "подгонки и доводки";
• поддержка для генераторов кода.
Новые средства в C# 9 обозначаются как "(нововведение в версии 9.0)" в заголовках разделов, которые им посвящены, а обновленные средства помечаются как "(обновление в версии 9.0)" .
Сравнение управляемого и неуправляемого кода
Важно отметить, что язык C# может применяться только для построения программного обеспечения, которое функционирует под управлением исполняющей среды .NET Core (вы никогда не будете использовать C# для создания COM-сервера или неуправляемого приложения в стиле C/C++). Выражаясь официально, для обозначения кода, ориентированного на исполняющую среду .NET Core, используется термин
Бьерн Страуструп , Бьёрн Страуструп , Валерий Федорович Альмухаметов , Ирина Сергеевна Козлова
Программирование, программы, базы данных / Базы данных / Программирование / Учебная и научная литература / Образование и наука / Книги по IT