为什么我们在调用方法时需要使用out关键字

时间:2010-06-18 06:42:58

标签: c# .net clr

当使用out参数定义方法时,为什么在调用它时必须指定out关键字。它已经存在于方法定义中,运行时应该知道传递的任何参数都是out参数。

如果编译器接受带或不带out关键字的参数,并使用不同的语义,那将是有意义的,但是如果必须添加关键字以使代码编译,那么使用是什么?编译器不应该自动处理吗?

同样的参考

5 个答案:

答案 0 :(得分:11)

这对于可读性来说真的很棒。 它还可以帮助您避免意外行为。在使用out param调用方法时,您肯定会知道传递变量的值可以更改。

答案 1 :(得分:7)

这个要求不适合编译器。 f (x, out y)会在y返回后立即通知正在阅读f将被覆盖的代码的人,而无需查找f的定义,从而节省了他们的精神CPU周期。

答案 2 :(得分:3)

可能是因为C#允许你写这样的重载:

class X
{
    public void Y(int i) { ... }
    public void Y(out int i) { ... }
}

在这种情况下,如果在调用方法时没有编写此关键字,则编译无法理解应调用具有键作用out的方法。通常,当使用此keyworrd声明方法时,您应该编写out

当然,当你调用方法时写out时,你肯定知道这个变量可以在方法中改变。它非常易读。

<强> MSDN Article

答案 3 :(得分:0)

这是一个好点,也许它与可读性有关。假设我们有一个带有两个参数的方法,如此

bool TryGetString(string input, out string output)

无需指定out参数,只需简单地查看调用该方法的人,就不会完成。

答案 4 :(得分:0)

当您使用out关键字调用方法时,您的调用代码肯定知道它是通过引用传递的。在某些情况下,当您调用该方法时,您可能会遇到第三方库中定义out关键字的方法,您不知道该参数是通过引用还是值传递的。因此,您必须在调用方法中使用out来实现可读性。