如果StringBuilder是可变的,那么为什么StringBuilder方法返回一个StringBuilder对象?

Nik*_*wal 12 .net c# vb.net

我们都知道它strings是不可变的,StringBuilder是mutable.对.那为什么它的方法返回一个StringBuilder对象.他们都不是无效的方法吗?

为什么这个

public StringBuilder Append(bool value)
Run Code Online (Sandbox Code Playgroud)

并不是

public void Append(bool value)
Run Code Online (Sandbox Code Playgroud)

任何解释使用它的例子都会很棒.

duf*_*ymo 20

它被称为"流畅的界面".它允许您通过重复的点符号将调用链接在一起.

return new StringBuilder()
  .Append("Hello, ")
  .Append("world!")
  .ToString();
Run Code Online (Sandbox Code Playgroud)


Pao*_*tti 15

来自MSDN:

修改此类实例的大多数方法都返回对同一实例的引用.由于返回了对实例的引用,因此可以在引用上调用方法或属性.如果要编写一个一个接一个地连续操作的语句,这可能很方便.

示例:

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

这通常称为流畅的界面.