代码检查:根据可空引用类型的注解,表达式始终为“true”或“false”
如果启用了 可空引用类型(NRT) ,此检查在 C# 8.0 及更高版本中有效,并根据 NRT 合约报告始终为 true 或始终为 false 的表达式。
NRT 提高了空值分析的整体精确性,但在某些情况下,NRT 合约可能会被违反,例如,当值来自没有 #nullable 上下文的代码时。 在这种情况下,您可能会收到空值检查的误报警告。 您可以选择忽略可空 API 合约,仅在代码中对值的先前操作保证其可以或不可以为空时报告问题。
您可以直接从 Alt+Enter 菜单更改此行为:

...或者使用 可空引用类型的警告模式 选项,在 ReSharper 选项 的 页面上更改。
当 ReSharper 忽略可空 API 合约时,空值分析依赖程序控制流来报告冗余的空值检查。 它将使用另一个检查来处理。 例如:
var myString = ApiMethod();
if (myString is null)
throw new ApplicationException("the string is null");
// warning 'Expression is always true'
// 'myString' cannot be null because it's already checked for null in our code
if (myString != null)
Console.WriteLine(myString);
有关 NRT 及 ReSharper 如何支持它们的更多信息,请观看此网络研讨会录制:
最后修改日期: 2025年 9月 27日