为什么 StringBuilder Append 方法 return 一个 StringBuilder 对象?

Why do the StringBuilder Append methods return a StringBuilder object?

因此,如果您查看 'StringBuilder' 的任何 Append 方法,return 类型是 StringBuilder。不是字符串或行数或任何您可能认为甚至直观有用的东西。表面上(我还没有检查过),它是您刚刚调用方法的同一个 StringBuilder 对象。

我实在找不到原因。有吗?

这是所谓的“流畅界面”或“流畅 API”的简单形式。 (参见 This wikipedia article)API 遵循该模式允许链接方法,这在开始时可能看起来很奇怪,但可能使代码易于阅读。另一个著名的 API 实现它的是 linq,你可以在其中编写类似

的东西
myList.Where(x => x.Element1 > 1).OrderBy(x => x.Element2).Select(x => x.Element3);

或者,作为一个非常复杂的流利示例 API,来自 Nuke build 的任务描述:

Target CompileForMatlab => _ => _
    .Executes(() =>
    {
        MSBuild(s => s
                    .SetSolutionFile(Solution)
                    .SetConfiguration(Configuration)
                    .AddTargets("Restore,Build,Publish")
                    .SetProjectFile(Solution.GetProject("ExtendedLogParser"))
                    .SetOutDir(ArtifactsDirectory / "ExtendedLogParser")
                    .SetProperty("Platform", Platform)
                    .AddProperty("SelfContained", true)
                    .AddProperty("RuntimeIdentifier", "win10-x64")
                    .AddProperty("PublishDir", "../ExtendedLogParser")
                    .DisableNodeReuse());
    });