В чем разница между NullableContextOptions и NullableReferenceTypes?
Я играл с новым c# 8.0
NullableReferenceTypes
особенность на время. И я немного озадачен включением этой функции с помощью изменения .csproj
файл.
Я имею в виду, чтобы включить эту функцию, вы должны поместить следующие строки в .csproj
файл:
<PropertyGroup>
<LangVersion>8.0</LangVersion>
<NullableContextOptions>enable</NullableContextOptions>
</PropertyGroup>
Но я также нашел другой способ:
<PropertyGroup>
<LangVersion>8.0</LangVersion>
<NullableReferenceTypes>true</NullableReferenceTypes>
</PropertyGroup>
Так что это почти то же самое, но в любом случае. В чем разница между NullableContextOptions
а также NullableReferenceTypes
?
2 ответа
В предыдущих превью компилятор допускал только две настройки (true/false, что означает вкл / выкл).
В последующих предварительных просмотрах (начиная с предварительного просмотра 2) компилятор разрешил больше параметров, поэтому имя параметра и возможные параметры были изменены.
Вот документация о возможных опциях и их значениях: https://docs.microsoft.com/en-us/dotnet/csharp/nullable-references
Начиная с.NET Conf 2019 (выпуск C# 8.0), правильный способ достижения ссылочных типов, не допускающих значения NULL, по умолчанию:
<PropertyGroup>
<LangVersion>8.0</LangVersion>
<Nullable>enable</Nullable>
</PropertyGroup>
Вам необходимо иметь Visual Studio 2019 preview 2 или.NET Core 3.0 preview 2, чтобы использовать NullableReferenceTypes
,
Вам также необходимо включить C# 8.0. Проверить LangVersion
элемент, чтобы убедиться, что он установлен в 8.0
,
NullableReferenceTypes
изменено на <NullableContextOptions>enable</NullableContextOptions>
в Visual Studio 2019 превью 2
PS: эта функция еще не работает в .Net Framework