API为什么应该返回“void”? - c#

在编写API或可重用对象时,是否有任何技术原因,为什么所有返回“void”的方法调用都不应仅返回“this”(在C++中为this)?

例如,使用字符串类,我们可以做这种事情:

string input= ...;
string.Join(input.TrimStart().TrimEnd().Split("|"), "-");

但是我们不能这样做:

string.Join(input.TrimStart().TrimEnd().Split("|").Reverse(), "-");

..因为Array.Reverse()返回void。

还有许多其他示例,其中API具有许多返回无效值的操作,因此代码最终看起来像:

api.Method1();
api.Method2();
api.Method3();

..但是完全有可能写:

api.Method1().Method2().Method3()

..如果API设计者允许这样做。

遵循此路线是否有技术原因?还是只是样式,以表示可变性/新对象?

(x-ref Stylistic question concerning returning void)

EPILOGUE

我已经接受了Luvieere的回答,因为我认为这最好地表示了意图/设计,但是似乎有一些流行的API示例与此有所不同:

在C++中,cout << setprecision(..) << number << setwidth(..) << othernumber;似乎会更改cout对象,以修改下一个插入的数据。

在.NET中,Stack.Pop()Queue.Dequeue()都返回一个项目,但也更改了集合。

向ChrisW和其他人提供有关实际性能成本的详细信息的道具。

参考方案

返回无效状态的方法更清楚地表明它们具有副作用。返回修改结果的结果应该没有副作用,包括修改原始输入。使方法返回void意味着它更改了其输入或API的某些其他内部状态。

改造正在返回一个空的响应主体 - java

我正在尝试使用Retrofit和Gson解析一些JSON。但是,我得到的响应机构是空的。当我尝试从对象中打印信息时,出现NullPointerException。我确保URL正确,并且我也确保POJO也正确。我正在使用jsonschema2pojo来帮助创建POJO类。这是我要解析的JSON{ "?xml": { "@versi…

当我运行python代码时,它说“ <<目前是意外情况” - python

基本上,这是我们合作者的python代码,用于生成网格,该网格是在Linux环境下开发的。我使用Cygwin在Windows上运行此代码。麻烦部分如下。 BiV_temp.geo也是一个python脚本。因此,命令是用预定义的数字和文件名替换脚本BiV_temp.geo中的字符串。os.system('cp BiV_fiber.geo BiV_te…

Google Analytics API - php

我正在实施Google Analytics(分析)Api。授权完成没有问题。成功授权后,我得到403 return code并得到消息:User does not have sufficient permissions for this profile。我的帐户具有Google Analytics(分析)数据,可以跟踪多个网站,并且我可以从网络浏览器访问它而…

Java中的“ <<”运算符 - java

最喜欢的语句来自Java的Character类:(1 << Character.PARAGRAPH_SEPARATOR)) >> type PARAGRAPH_SEPARATOR是字节,type是整数。这句话中的操作员,他们做什么?如何以及在哪里可以使用这些运算符?这是oracles java.lang.Character文档。该类中…

我需要帮助将此REST API Curl命令转换为Python请求 - python

我在这里是新手,老实说对所有编码都是新手。我正在尝试创建一个Pyton脚本,以使用REST API从Request Tracker资产数据库中搜索项目。到目前为止,我得到了以下Curl命令:curl -X POST \ -H "Content-Type: application/json" \ -d '[{ "fiel…