为什么C#区分ref和out?

时间:2013-12-22 20:44:28

标签: c#

根据此postrefout之间存在区别的原因是因为在使用ref时复制变量值的代价很高。

为什么首先需要编组?不是C#只是通过引擎盖下的指针?在这种情况下,不需要复制值。

1 个答案:

答案 0 :(得分:3)

因为两者的语义完全不同。

out参数用于表示它将用于返回(输出)一个值,仅此而已。

另一方面,ref参数表示应通过引用将现有对象(变量)传递给方法。在C#的上下文中,通过引用传递的对象(不要被引用类型混淆)通常暗示该方法将(并且应该)修改该对象。它不应该“仅仅因为”。它通常仅用于值类型,因为它是获取它们的引用语义的唯一方法。