7

C# 中的赋值运算符返回分配的值。目前尚不清楚此功能在何处/如何提供帮助。像这样以奇怪的语法使用它可以节省一行代码,但对可读性没有任何好处:

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

那它的目的是什么?

4

2 回答 2

12

链式赋值是许多可以追溯到 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();

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

于 2013-07-19T03:04:47.313 回答
4

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

btnSubmit.Enabled = btnAdd.Enabled = btnCancel.Enabled = txtID.Enabled= false;
于 2013-07-19T03:25:15.830 回答