This question already has answers here:
Why do assignment statements return a value?

(14个回答)


7年前关闭。




C# 中的 assignment operator 返回分配的值。
目前尚不清楚此功能在何处/如何有用。以这种奇怪的语法使用它可以为您节省一行代码,但对可读性没有任何好处:
   private String value;
   public void SetAndPrintValue(String value)
      PrintValue(this.value = value);
   }
   private static void PrintValue(String value) {
      /* blah */
   }

那它的目的是什么?

最佳答案

Chained assignment是可追溯到C(可能更早)的许多语言的主要内容。 C#支持它,因为它是此类语言的共同特征,并且用途有限(例如goto语句)。

有时您可能会看到如下代码:

int a, b, c;
for(a = b = c = 100; a <= b; c--)
{
    // some weird for-loop here
}

或这个:
var node = leaf;
while(null != node = node.parent)
    node.DoStuff();

这可能会使某些代码更紧凑,或者允许您做一些巧妙的技巧,但是它并没有使它更具可读性。在大多数情况下,我建议您反对它。

关于c# - 为什么赋值运算符在C#中返回赋值?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/17737436/

10-13 03:25