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# でサポートされているのは、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 に答える