【发布时间】:2020-11-23 20:30:36
【问题描述】:
我不久前读过以下关于 C# 8 中可空引用分析的文章: https://www.meziantou.net/csharp-8-nullable-reference-types.htm
后置条件属性对我来说特别有趣。最近我遇到了一种情况,应用MemberNotNull 属性可能很有用。但是,出乎意料的是,我在 .Net core 3.1 中找不到 MemberNotNull 和 MemberNotNullWhen 公共属性。但是,我可以看到 .net 核心中声明的许多内部属性:
https://source.dot.net/#q=MemberNotNull
.net 核心中是否有这些属性的替换。我必须使用 .net 5 才能使用它们吗?
【问题讨论】:
-
MemberNotNullWhenAttribute被添加到 .NET 5 中,源代码可以在 here 找到。 -
MemberNotNull可以在the same file找到 -
感谢您提供文档链接。我自己在问题中提供了指向 MemberNotNullWhenAttribute 来源的链接。在 .net core 的不同程序集中有多个相同属性的声明。如果可能的话,我想在我的代码中避免这样的声明,因为它对我来说看起来不是很干净。更重要的是,我不知道它是否适用于 Roslyn。
-
我尝试将这两个属性的声明复制到我的代码中,但没有成功。警告仍然显示。
-
嗯,这很明显。属性本身不做任何事情。您还需要工具(Roslyn 分析器)
标签: c# c#-8.0 nullable-reference-types