有没有更短的方法可以用 C# 8 编写此代码?

ese*_*ege 2 .net c# null null-coalescing-operator null-conditional-operator

if (value2 != null)
{
    value1 = value2;
}
                
Run Code Online (Sandbox Code Playgroud)

??运算符在这里似乎没有用。我想到使用三元运算符。

value1 = (value2 != null) ? value2 : value1;
Run Code Online (Sandbox Code Playgroud)

看起来不太好。有更短的路吗?

Eni*_*ity 8

看来这是最接近的:

value1 = value2 ?? value1;
Run Code Online (Sandbox Code Playgroud)

我觉得你的原文if更具可读性。

??如果在表达式中使用该运算符,则该运算符最有用。像这样:

var x = (value2 ?? value1) * System.Math.Pi();
Run Code Online (Sandbox Code Playgroud)

  • @esege `value2` 是 `string.Empty`,而不是 `null`。[使用您的原始解决方案](https://dotnetfiddle.net/yRS6IQ)您可以看到相同的行为。 (4认同)
  • @esege - 不,当“value2”为“null”时,“value1”将被分配给“value1”(即没有变化)。就像你的“if”语句一样。 (3认同)
  • @esege - https://dotnetfiddle.net/QPh0JE 当您使用“null”时它会发生。 (2认同)