ReSharper 2025.2 Help

代码检查:“??” 条件已知为 null 或非 null

如果您想根据标识符的可空性分配值、传递参数或从方法返回值,在这些情况下,您可以使用的最清晰语法是 ?? (空合并)运算符。

空合并表达式的工作原理如下。 首先计算左操作数,如果其为 null,则计算右操作数,其结果将成为整个表达式的结果。

然而,冗余的空合并表达式会产生无效代码并降低可读性。 根据 ?? 运算符的逻辑,使用 null 作为右操作数没有意义。 如下所示,ReSharper 建议删除右操作数 null 以及 ?? 运算符,因为如果 newCategory 为 null,则无论如何都会将 null 分配给 类别

public class Customer { public string Category { get; set; } private void ChangeCategory(string newCategory) { Category = newCategory ?? null; } /* … */ }
public class Customer { public string Category { get; set; } private void ChangeCategory(string newCategory) { Category = newCategory; } /* … */ }

空合并运算符冗余的另一种情况是左操作数永远不会为 null。 在这种情况下,右操作数永远不会被访问,ReSharper 建议删除不可达代码:

string name = "John"; Console.WriteLine(name ?? "empty");
string name = "John"; Console.WriteLine(name);
最后修改日期: 2025年 9月 27日