在某些使用C/C++的情况下,我可以通过语法来指示编译器有意忽略一个返回值:
int SomeOperation() { // Do the operation return report_id; } int main() { // We execute the operation,but in this particular context we // have no use of the report id returned. (void)SomeOperation(); }
我认为这是一个公平的做法,首先是因为大多数编译器在这里不会产生警告,其次是因为它明确地向未来的开发人员展示了作者做出了粗略的选择来忽略这个回报.这使得作者的思想道路不含糊.
据我所知,C#编译器不会抱怨隐含忽略的返回值,但是我想知道是否有类似的约定用于向其他开发人员提供明确的指示.
编辑:
为了回应这里的一些人对这个惯例的实际使用提出质疑(或者说它会显示不好的设计来拥有一个可能不重要的返回值的方法).
一个现实生活的.NET示例(我可能应该从一开始就提出这个问题)是Mutex :: WaitOne()重载,它没有参数.如果互斥体安全地获取,它将返回,否则它永远不会返回.布尔值返回值用于其他重载,当您返回时可能最终不会拥有互斥体.
所以按照我的推理,我想在我的多线程代码中指出,我已经选择忽略了返回:
Mutex mtx = new Mutex(); (void)mtx.WaitOne();
由于回报率绝对不能是“真实”.