12

私たちは皆、それstringsが不変であり、StringBuilderがであるということを知っていますmutable。右。それでは、なぜそのメソッドがStringBuilderオブジェクトを返すのでしょうか。それらはすべてvoidメソッドであるべきではありませんか?

なぜこれ

public StringBuilder Append(bool value)

ではなく

public void Append(bool value)

これの使用法を説明する例は素晴らしいでしょう。

4

2 に答える 2

21

これは「流暢なインターフェース」と呼ばれます。ドット表記を繰り返すことで、呼び出しを連鎖させることができます。

return new StringBuilder()
  .Append("Hello, ")
  .Append("world!")
  .ToString();
于 2012-09-07T11:16:42.893 に答える
15

MSDNから:

このクラスのインスタンスを変更するほとんどのメソッドは、同じインスタンスへの参照を返します。インスタンスへの参照が返されるため、参照のメソッドまたはプロパティを呼び出すことができます。これは、連続する操作を次々にチェーンする単一のステートメントを記述したい場合に便利です。

string user = new StringBuilder()
    .AppendFormat("Name: {0}", user.Name)
    .AppendLine()
    .AppendFormat("Email: {0}", user.Email)
    .AppendLine()
    .ToString();

これは通常、流暢なインターフェイスと呼ばれます。

于 2012-09-07T11:17:20.617 に答える