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

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

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

那么它的目的是什么?

链式赋值是许多语言的主要内容,可以追溯到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(); 

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

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

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