NullableContextOptions和NullableReferenceTypes有什么区别?

isx*_*ker 7 c# c#-8.0 nullable-reference-types

我玩新c# 8.0 NullableReferenceTypes功能已有一段时间了。我对通过更改.csproj文件来启用此功能有些困惑。

我的意思是,要启用此功能,您必须在.csproj文件中放入以下几行:

<PropertyGroup>
  <LangVersion>8.0</LangVersion>
  <NullableContextOptions>enable</NullableContextOptions>
</PropertyGroup>
Run Code Online (Sandbox Code Playgroud)

但我也找到了另一种方法:

<PropertyGroup>
  <LangVersion>8.0</LangVersion>
  <NullableReferenceTypes>true</NullableReferenceTypes>
</PropertyGroup>
Run Code Online (Sandbox Code Playgroud)

所以几乎一样,但无论如何。NullableContextOptions和之间有什么区别NullableReferenceTypes

Jul*_*eur 7

在早期的预览中,编译器仅允许两个设置(true / false,表示开/关)。

在以后的预览中(从预览2开始),编译器允许更多选项,因此更改了设置名称和可能的选项。

这是可能的选项及其含义的文档:https : //docs.microsoft.com/zh-cn/dotnet/csharp/nullable-references


Der*_*ğlu 0

您需要拥有 Visual Studio 2019 预览版 2 或 .NET Core 3.0 预览版 2 才能使用NullableReferenceTypes.

您还需要启用 C# 8.0。检查该LangVersion元素以确保其设置为8.0

NullableReferenceTypes<NullableContextOptions>enable</NullableContextOptions>在 Visual Studio 2019 预览版 2 中更改为

PS:该功能在.Net Framework中尚不支持