代码检查:“??” 条件已知为 null 或非 null
如果您想根据标识符的可空性分配值、传递参数或从方法返回值,在这些情况下,您可以使用的最清晰语法是 ?? (null 合并)运算符。
空合并表达式的工作原理如下。 首先计算左操作数,如果其为 null,则计算右操作数,结果成为整个表达式的结果。
然而,多余的空合并表达式会产生无效代码并妨碍可读性。 根据 空合并运算符 运算符的逻辑,使用 null 作为右操作数没有意义。 如下所示,JetBrains Rider 建议删除右操作数 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。 在这种情况下,右操作数永远不会被访问,JetBrains Rider 建议删除无法访问的代码:
string name = "John";
Console.WriteLine(name ?? "empty");
string name = "John";
Console.WriteLine(name);
最后修改日期: 2025年 9月 26日