为什么赋值运算符在C#中返回赋值?

时间:2013-07-19 03:00:44

标签: c#

C#中的assignment operator返回指定的值。 目前尚不清楚此功能在何处/如何有用。以这种奇怪的语法使用它可以为您节省一行代码,但不会对可读性有任何好处:

   private String value;
   public void SetAndPrintValue(String value)
      PrintValue(this.value = value);
   }
   private static void PrintValue(String value) {
      /* blah */
   }

那么它的目的是什么?

2 个答案:

答案 0 :(得分:12)

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();

这可能会使一些代码更紧凑,或者允许你做一些聪明的技巧,但它肯定不会使它更具可读性。在大多数情况下,我建议不要这样做。

答案 1 :(得分:4)

我通常用它来为控件分配相同的属性。

btnSubmit.Enabled = btnAdd.Enabled = btnCancel.Enabled = txtID.Enabled= false;