为什么我们需要“输出”参数?

8

我理解"out"和"ref"类型很像,只是"out"变量不需要初始化。除此之外,还有其他用途吗?有时我会在回调方法中看到它们的使用,但我从来没有理解它们实际上是如何工作的,以及为什么我们需要它们而不是全局级别的"ref"变量。

4个回答

14

out参数通过明确指定被调用函数(被调用方)将对其进行初始化,从而强制执行调用方和被调用方之间的合同。另一方面,当使用ref参数时,我们只知道被调用方可能会修改它们,但初始化责任在调用方。


3

其中一个最大的例子是TryParse方法,您想要能够检查是否可以转换,通常如果可以转换,您希望得到转换后的值。否则,它只是将对象传回调用方法的另一种方式。


3

为什么你会希望在调用方法中初始化一些变量,而没有保证被调用的方法如果正常完成会覆盖这个变量呢?这就是out参数给你带来的好处。

基本上,我认为out参数是“哎呀,我需要返回多个值”的指示器。我个人更喜欢使用元组,但当然它们只出现在.NET 4中...并且没有明确的语言支持,使用起来比理想情况下稍微有点麻烦。


0

有两个主要的区别

  1. 与ref不同,它不需要变量被初始化。
  2. 使用OUT时,被调用的函数负责分配值,而不是调用者。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接