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

Mid*_*hat 8 .net c# clr

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

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

同样的参考

Inc*_*ito 11

它非常适合可读性.它还可以帮助您避免意外行为.在使用out param调用方法时,您肯定会知道传递变量的值可以更改.


Ant*_*hyy 7

出于编译器的缘故,这个要求并不存在.f (x, out y)立即通知谁正在读取返回y后将被覆盖的代码f,而无需查找定义f,从而节省了精神CPU周期.


Pav*_*sov 3

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

class X
{
    public void Y(int i) { ... }
    public void Y(out int i) { ... }
}
Run Code Online (Sandbox Code Playgroud)

out在这种情况下,如果在调用方法时不写此关键字,编译器将无法理解应该调用带有 keywork 的方法。通常,您应该编写out使用此关键字声明的方法。

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

MSDN 文章