Выбрать главу

• За именованными аргументами могут следовать позиционные аргументы.

• Числовые литералы теперь могут иметь ведущие символы подчеркивания перед любыми печатаемыми цифрами.

• Модификатор доступа 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, используется термин управляемый код. Двоичный модуль, который содержит управляемый код, называется сборкой (сборки более подробно рассматриваются далее в главе). И наоборот, код, который не может напрямую обслуживаться исполняющей средой .NET Core, называется неуправляемым кодом.

Как упоминалось ранее, инфраструктура .NET Core способна функционировать в средах разнообразных операционных систем. Таким образом, вполне вероятно создавать приложение C# на машине Windows с применением Visual Studio и запускать его под управлением iOS с использованием исполняющей среды .NET Core. Кроме того, приложение C# можно построить на машине Linux с помощью Visual Studio Code и запускать его на машине Windows. С помощью Visual Studio для Mac на компьютере Мае можно разрабатывать приложения .NET Core, предназначенные для выполнения под управлением Windows, macOS или Linux.

Программа C# по-прежнему может иметь доступ к неуправляемому коду, но тогда она привяжет вас к специфической цели разработки и развертывания.

Использование дополнительных языков программирования, ориентированных на .NET Core

Имейте в виду, что C# — не единственный язык, который может применяться для построения приложений .NET Core. В целом приложения .NET Core могут строиться с помощью С#, Visual Basic и F#, которые представляют собой три языка, напрямую поддерживаемые Microsoft.

Обзор сборок .NET