Подтвердить что ты не робот

Если StringBuilder изменен, то почему методы StringBuilder возвращают объект StringBuilder?

Мы все знаем, что strings являются неизменяемыми, а StringBuilder - mutable. Правильно. Тогда почему его методы возвращают объект StringBuilder. Должны ли они все быть недействительными?

Почему это

public StringBuilder Append(bool value)

а не

public void Append(bool value)

Любой пример, объясняющий использование этого, был бы большим.

4b9b3361

Ответ 1

Он назвал "свободный интерфейс" . Он позволяет объединять вызовы с помощью повторных точечных обозначений.

return new StringBuilder()
  .Append("Hello, ")
  .Append("world!")
  .ToString();

Ответ 2

От MSDN:

Большинство методов, которые изменяют экземпляр этого класса, возвращают ссылка на тот же самый экземпляр. Поскольку ссылка на экземпляр вы можете вызвать метод или свойство в ссылке. Это может быть удобным, если вы хотите написать одно утверждение, что цепочки последовательные операции один за другим.

Пример:

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

Обычно это называется свободный интерфейс.