为什么我们需要在调用方法时使用关键字
问题描述:
当使用out参数定义方法时,为什么在调用方法时必须指定out关键字。它在方法定义中已经存在,并且运行时应该知道传递的任何参数都将是out参数。为什么我们需要在调用方法时使用关键字
如果编译器会接受带或不带关键字的参数,并且语义不同,但是如果您必须添加关键字以使代码编译,那么它有什么用?编译器不应该自动处理它?
与参考相同
答
可能是因为C#允许你编写重载这样的:
class X
{
public void Y(int i) { ... }
public void Y(out int i) { ... }
}
在这种情况下编译无法理解与keywork out
该方法应被调用,如果你当你打电话不写此关键字方法。当通过此keyworrd声明方法时,通常应该编写out
。
当然,当您在调用方法时编写out
时,您明确知道可以在方法中更改此变量。它非常可读。
答
这个要求不是编译器的缘故。 f (x, out y)
立即通知谁正在阅读代码y
将在f
返回后被覆盖,而不需要查找f
的定义,从而为他们节省心智的CPU周期。
答
这是一个很好的观点,也许它与可读性有关。假设我们有两个参数的方法,像这样
bool TryGetString(string input, out string output)
,而无需指定输出参数,只是简单的看看别人调用该方法时,它不会做,因为完整。
答
当您调用out
关键字的方法时,您的调用代码肯定知道它是通过引用传递的。在某些情况下,当您调用该方法时,您可能会在第三方库中遇到关键字定义为out
的方法,但您不知道该参数是否通过引用或值传递。所以你不得不在调用方法中使用out
进行readability。
我想,这是为了使代码更易读。 – mohang 2010-06-18 06:46:23