c# - 为什么 StringBuilder Append 方法返回一个 StringBuilder 对象?
问题描述
因此,如果您查看“StringBuilder”的任何 Append 方法,返回类型为StringBuilder
. 不是字符串或行数或任何您可能认为直观有用的东西。从表面上看(我还没有检查过),它与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());
});
推荐阅读
- c# - 即使使用量急剧下降,Open shift pod 内存仍然很高
- amazon-web-services - 如何使用 ACM 证书与 ECR 进行身份验证?
- java - 在 OpenCV 和 Java 中检索 R-CNN 掩码
- ide - 如何通过 filetypes.common 将 Geany 中的文本设置为粗体?
- gpu - 如何测量 GPU 执行时间
- google-bigquery - Amundsen Bigquery 元数据摄取 - 如何在 Amendsun 中将表标签添加为 TAG
- github - 添加自定义域
- mongodb - 使用 $and 查询更新 Mongodb 的数组项
- mongodb - 在 MongoDb 中使用 addToSet 时保持原始文档的顺序
- python - SSL:CERTIFICATE_VERIFY_FAILED 使用 Watson Streaming STT