В чем разница между NullableContextOptions и NullableReferenceTypes?

Я играл с новым c# 8.0NullableReferenceTypes особенность на время. И я немного озадачен включением этой функции с помощью изменения .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

Другие вопросы по тегам