Каковы минимальные требования к платформе .NET и CLR для запуска С# 7? Кроме того, мне нужно VS 2017 для компиляции С# 7?
Требования к версии С# 7.NET/CLR/Visual Studio
Ответ 1
Вам не нужно указывать .NET 4.6 и выше, это неверно. Чтобы использовать Tuples, вам нужен пакет System.ValueTuple NuGet. Прямо на https://www.nuget.org/packages/System.ValueTuple/ вы можете видеть, что он поддерживает 4.5 и выше, и фактически он поддерживает 4.0 и выше. И если вы хотите сходить с ума, если вы создаете свой собственный класс System.ValueTuple
, который делает именно то, что делает этот пакет, он будет работать на .NET 3.5 и, вероятно, и старше. Для типов типа "Task-like" вам также нужен пакет NuGet, https://www.nuget.org/packages/System.Threading.Tasks.Extensions/. Этот пакет также работает с .NET 4.5 и новее в соответствии с его документацией.
Другие функции С# 7 будут работать только на .NET 2 и выше, поскольку они всего лишь синтаксический сахар. Например, я просто написал следующее в .NET 2.0, и он правильно выбрасывает:
static void Main(string[] args)
{
string test = null;
string d = test ?? throw new ApplicationException("test");
}
Аналогично, int.TryParse("123", out int i);
отлично работает в .NET 2.0.
Я не тестировал каждую функцию С# 7, но в целом, за исключением Tuples (и связанных с ними функций, таких как деконструкция), он должен работать в .NET 2.0 и выше, поскольку большинство из них - просто синтаксический сахар. При этом вам нужно VS2017 для компиляции С# 7. Я уверен, что в какой-то момент другие компиляторы будут поддерживать С# 7, но не сегодня.
Возможности Я подтвердил работу в .NET 2.0:
- Двоичные литералы
- Сегментаторы цифр
- Параметры Inline
out
- Использование
_
для отбрасывания параметров - Локальные функции
- Соответствие шаблону на основе типа
if (obj is int i)
иcase int i:
- Согласование констант
if (i is 2)
- Сортировка шаблонов
if (i is var j)
- Возвращает
- Выбросить выражения
- Выражения, связанные с получателями и сеттерами
- Конструкторы выражений и финализаторы
Ответ 2
Чтобы использовать полную мощность С# 7 из коробки (без ссылок на nugets и т.д.), вам нужны VS 2017 и .Net 4.7 как Target Framework.