C # 8.0 notnull Типовое ограничение типа - PullRequest
2 голосов
/ 25 сентября 2019

Я пытаюсь использовать только что выпущенные функции .NET Standard 2.1 C # 8.0 в VS2019 Preview 16.4.0, но продолжаю получать сообщение «Не удается разрешить символ« notnull »».

Мой пример кода:

class Example<T> where T : notnull {}

У меня есть свойство <Nullable>enable</Nullable> и <LangVersion>8</LangVersion>, заданное в моем файле проекта, и все эти новые функции работают великолепно, просто кажется, что это так.

Как можноЯ использую notnull тип ограничения?

1 Ответ

6 голосов
/ 25 сентября 2019

Это потому, что C # 8.0 не включен.

В некоторых предварительных версиях .NET Core 3.0 SDK C # 8.0 был preview версией, а не latest или latestMajor версией, которая принимаетсяв качестве языковой версии по умолчанию.

Но по крайней мере в .NET Core 3.0 GA (официальная версия выпуска) C # 8.0 включен по умолчанию, если ваш проект нацелен на netcoreapp3.0.Но что касается цели netstandard2.1, языковой версией по умолчанию по-прежнему будет 7.3.

Если вам действительно нужно поделиться этой библиотекой с последними приложениями Xamarin, поддерживающими .NET Standard 2.1, явно укажите <LangVersion>8.0</LangVersion> в .csproj файл в PropertyGroup, или вы просто установите TargetFramework на netcoreapp3.0, и C # 8.0 должен быть включен по умолчанию.

...