我正在用黄皮书学习c#。在第3.1.9章中,当描述以ref/out形式传递参数值之间的差异时,它说:
当你传递一个参数作为引用时,你给了方法对它的完全控制。有时候你并不想这样。相反,您只希望允许该方法更改变量。
如果我是一个编码的方法,即它的行为,我如何给它完全控制?
这并不意味着它不安全,它只是意味着该方法"控制了你的变量"。作为参数传递给"处理"。它可能返回一个全新的对象,而不是您"提供"的对象。
当在方法的形参列表中使用时,ref关键字表明参数是通过引用传递的,而不是通过值传递的。ref关键字使形式形参成为实参的别名,实参必须是一个变量。换句话说,对形参的任何操作都是对实参进行的。例如,假设调用者传递了一个局部变量。然后,被调用的方法可以替换ref形参所指向的对象。在这种情况下,调用者的局部变量或数组元素在方法返回时引用新对象。