NullableContextOptions 和 NullableReferenceTypes 有啥区别?
Posted
技术标签:
【中文标题】NullableContextOptions 和 NullableReferenceTypes 有啥区别?【英文标题】:What is the difference between NullableContextOptions and NullableReferenceTypes?NullableContextOptions 和 NullableReferenceTypes 有什么区别? 【发布时间】:2019-07-18 01:41:36 【问题描述】:我一直在玩新的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
有什么区别?
【问题讨论】:
This 可以帮到你。 自 VS 16.1 起,该属性被重命名为 Nullable。 NullableContextOptions 和 NullableReferenceTypes 都不再有效。名称较短且与命令行参数一致。 【参考方案1】:在早期的预览版中,编译器只允许两种设置(真/假,意思是开/关)。
在后来的预览版中(从预览版 2 开始),编译器允许更多选项,因此更改了设置的名称和可能的选项。
以下是可能选项及其含义的文档:https://docs.microsoft.com/en-us/dotnet/csharp/nullable-references
【讨论】:
请注意,属性名称现在只是<Nullable>
。【参考方案2】:
从 .NET Conf 2019(C# 8.0 版本)开始,实现默认不可空引用类型的正确方法是:
<PropertyGroup>
<LangVersion>8.0</LangVersion>
<Nullable>enable</Nullable>
</PropertyGroup>
【讨论】:
【参考方案3】:您需要拥有 Visual Studio 2019 预览版 2 或 .NET Core 3.0 预览版 2 才能使用 NullableReferenceTypes
。
您还需要启用 C# 8.0。检查LangVersion
元素以确保其设置为8.0
。
NullableReferenceTypes
在 Visual Studio 2019 预览版 2 中更改为 <NullableContextOptions>enable</NullableContextOptions>
PS:此功能在 .Net Framework
中尚不可用【讨论】:
你是什么意思这个功能还没有在.net框架中工作?我可以使用以下行为我的 .net 框架应用启用此功能:#nullable enable
。它实际上运作良好。但我不知道如何通过.csproj
文件启用它。
有问题here
基本上是我昨天创建的)
@DervişKayımbaşıoğlu “此功能在 .Net Framework 中尚不可用”是什么意思?它对我来说很好。
@DervişKayımbaşıoğlu 它仅适用于新的 csproj 格式,否则 <NullableContextOptions>
将被忽略。以上是关于NullableContextOptions 和 NullableReferenceTypes 有啥区别?的主要内容,如果未能解决你的问题,请参考以下文章
第三十一节:扫盲并发和并行同步和异步进程和线程阻塞和非阻塞响应和吞吐等
shell中$()和 ` `${}${!}${#}$[] 和$(()),[ ] 和(( ))和 [[ ]]
Java基础8---面向对象代码块和继承和this和super和重写和重载和final
Java基础8---面向对象代码块和继承和this和super和重写和重载和final
JS中some()和every()和join()和concat()和pop(),push(),shift(),unshfit()和map()和filter()