-1

我被问到下面的问题,我被卡住了。我理解价值和参考之间的区别,但不知道我什么时候会在方法中使用它们。

如果你在写一个方法,你会选择哪种参数传递方法,如果有的话?为什么?

我在下面发现了这一点,以帮助我了解差异。

“如果我告诉你 URL,我是通过引用传递的。你可以使用该 URL 来查看我可以看到的同一个网页。如果该页面被更改,我们都会看到更改。如果你删除 URL,所有你'正在破坏您对该页面的引用-您并没有删除实际页面本身。

如果我打印出页面并给您打印输出,我就是按价值传递。您的页面是原始的断开连接的副本。您不会看到任何后续更改,并且您所做的任何更改(例如在打印输出上涂鸦)都不会显示在原始页面上。如果您销毁打印输出,您实际上已经销毁了您的对象副本——但原始网页仍然完好无损。”

4

1 回答 1

0

请记住,按值传递会产生副本。不这样做可能有两个原因。首先,如果您传递的值是一些大型数据结构(或其他任何使用大量内存的数据),则复制整个数据可能效率低下且没有必要。其次,如果您希望对参数的任何更改都反映在调用函数中,则必须通过引用传递。这样,原始值会被修改,而不是副本。

当这两种情况都不适用时,按值传递通常更简单,也是更好的选择。

还有一件事要考虑。按值传递,因为它创建一个副本,保护原始函数中的值不被意外修改。但是,您可能希望通过引用传递来获得性能优势。在这种情况下,最好通过引用传递,但将参数标记为const(或任何适合您的语言的)。

于 2013-01-23T04:16:04.747 回答