根据此post,ref
和out
之间存在区别的原因是因为在使用ref
时复制变量值的代价很高。
为什么首先需要编组?不是C#只是通过引擎盖下的指针?在这种情况下,不需要复制值。
答案 0 :(得分:3)
因为两者的语义完全不同。
out
参数用于表示它将用于返回(输出)一个值,仅此而已。
另一方面,ref
参数表示应通过引用将现有对象(变量)传递给方法。在C#的上下文中,通过引用传递的对象(不要被引用类型混淆)通常暗示该方法将(并且应该)修改该对象。它不应该“仅仅因为”。它通常仅用于值类型,因为它是获取它们的引用语义的唯一方法。