首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如果StringBuilder是可变的,那么为什么StringBuilder方法返回StringBuilder对象?

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

Stack Overflow用户
提问于 2012-09-07 19:15:17
回答 2查看 905关注 0票数 12

我们都知道strings是不可变的,而StringBuilder就是mutable。正确的。那么为什么它的方法返回一个StringBuilder对象。它们不应该都是void方法吗?

为什么会这样?

代码语言:javascript
复制
public StringBuilder Append(bool value)

而不是

代码语言:javascript
复制
public void Append(bool value)

任何解释这个用法的例子都会很棒。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2012-09-07 19:16:43

它被称为"fluent interface"。它允许您通过重复的点符号将调用链接在一起。

代码语言:javascript
复制
return new StringBuilder()
  .Append("Hello, ")
  .Append("world!")
  .ToString();
票数 21
EN

Stack Overflow用户

发布于 2012-09-07 19:17:21

来自MSDN

大多数修改该类实例的方法都会返回对同一实例的引用。由于会返回对实例的引用,因此可以对该引用调用方法或属性。如果您想要编写一条语句,将一个接一个的链接到连续的操作,这会很方便。

示例

代码语言:javascript
复制
string user = new StringBuilder()
    .AppendFormat("Name: {0}", user.Name)
    .AppendLine()
    .AppendFormat("Email: {0}", user.Email)
    .AppendLine()
    .ToString();

这通常称为fluent interface

票数 15
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/12317021

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档