首页 > 解决方案 > 为什么 StringBuilder Append 方法返回一个 StringBuilder 对象?

问题描述

因此,如果您查看“StringBuilder”的任何 Append 方法,返回类型为StringBuilder. 不是字符串或行数或任何您可能认为直观有用的东西。从表面上看(我还没有检查过),它与StringBuilder您刚刚调用该方法的对象相同。

我真的看不出有什么原因。有吗?

标签: c#stringbuilder

解决方案


这是所谓的“流利接口”或“流利 API”的简单形式。(请参阅这篇维基百科文章)遵循该模式的 API 允许链接方法,这在开始时可能看起来很奇怪,但可能会使代码自然阅读。另一个实现这个的著名 API 是linq,您可以在其中编写类似

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

或者,作为一个非常复杂的 fluent 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());
    });

推荐阅读