return 语句中的空合并运算符- c#

null coalescing operator in return statements- c#

我在下面的 return 语句中使用了 null coalescing operator

return Variable??"undefined";

但是下面的代码,

return Variable??Variable="undefined";

我不明白它是如何工作的,因为运算符的第二个参数是一个赋值语句,我想知道 return 是如何工作的。

谁能帮我理解一下

来自docs

The assignment operator (=) stores the value of its right-hand operand in the storage location, property, or indexer denoted by its left-hand operand and returns the value as its result

所以赋值的 return 值就是被赋值的值。 Variable = "undefined" 因此 returns "undefined"。然后可以通过您的方法 returned。另一方面,?? 只是一个简单的 if 语句的 shorthand。

因此以下内容与您的代码非常相似:

if(Variable != null)
    return Variable
Variable = "undefined";
return Variable;

在 C# 中,赋值操作也 returns 赋值。 例如

Value=Value=Value=Value="Hello World"

是有效代码。 Assignment 首先从右到左计算。在您的情况下,分配>空合并运算符。 您可以将代码重写为

string returnValue="";
if(Variable==null)
    returnValue=Variable="undefined";
else
    returnValue=Variable;
return returnValue;