Questions tagged «pass-by-reference»

通过引用传递是一种参数编组策略,通过该策略,变量在内存中的位置将传递给函数,而不是变量值的副本,尽管函数会出现在源代码中,以接收变量本身而不是指针。


26
如何通过引用传递变量?
Python文档似乎尚不清楚参数是通过引用还是通过值传递,并且以下代码产生不变的值“原始” class PassByReference: def __init__(self): self.variable = 'Original' self.change(self.variable) print(self.variable) def change(self, var): var = 'Changed' 我可以做些什么来通过实际引用传递变量吗?

30
JavaScript是按引用传递还是按值传递语言?
基本类型(数字,字符串等)按值传递,但是对象是未知的,因为它们都可以按值传递(如果我们认为保存对象的变量实际上是对该对象的引用) )和按引用传递(当我们认为对象的变量包含对象本身时)。 尽管最后并没有什么大不了,但我想知道呈现通过惯例的参数的正确方法是什么。是否有JavaScript规范的摘录,该摘录定义了与此相关的语义?


12
为什么要在Java的方法参数上使用关键字“ final”?
当在方法参数上使用final关键字时,我无法理解该关键字在哪里真正方便。 如果我们排除使用匿名类,可读性和意图声明,那么对我来说几乎毫无用处。 强制某些数据保持不变并不像看起来那样强大。 如果参数是原始参数,则它将无效,因为参数作为值传递给方法,并且在范围之外进行更改将无效。 如果我们通过引用传递参数,则引用本身就是局部变量,并且如果在方法内部更改了引用,则不会在方法范围之外产生任何影响。 考虑下面的简单测试示例。尽管该方法更改了给定给定值的参考值,但该测试通过了,但没有效果。 public void testNullify() { Collection<Integer> c = new ArrayList<Integer>(); nullify(c); assertNotNull(c); final Collection<Integer> c1 = c; assertTrue(c1.equals(c)); change(c); assertTrue(c1.equals(c)); } private void change(Collection<Integer> c) { c = new ArrayList<Integer>(); } public void nullify(Collection<?> t) { t = null; }


11
为什么在传递对象时使用'ref'关键字?
如果将对象传递给方法,为什么要使用ref关键字?这不是默认行为吗? 例如: class Program { static void Main(string[] args) { TestRef t = new TestRef(); t.Something = "Foo"; DoSomething(t); Console.WriteLine(t.Something); } static public void DoSomething(TestRef t) { t.Something = "Bar"; } } public class TestRef { public string Something { get; set; } } 输出为“ Bar”,表示该对象已作为参考传递。

13
通过Javascript中的引用传递变量
如何在JavaScript中通过引用传递变量?我想对3个变量执行几个操作,因此我想将它们放在for循环中并对每个变量执行操作。 伪代码: myArray = new Array(var1, var2, var3); for (var x = 0; x < myArray.length; x++){ //do stuff to the array makePretty(myArray[x]); } //now do stuff to the updated vars 做这个的最好方式是什么?



7
如何将对象传递给C ++中的函数?
我是C ++编程的新手,但是我有Java的经验。我需要有关如何将对象传递给C ++函数的指导。 我是否需要传递指针,引用或非指针和非引用值?我记得在Java中没有这样的问题,因为我们只传递了保存对对象的引用的变量。 如果您还可以解释在哪里使用这些选项,那就太好了。

13
Ruby是通过引用还是通过值传递的?
@user.update_languages(params[:language][:language1], params[:language][:language2], params[:language][:language3]) lang_errors = @user.errors logger.debug "--------------------LANG_ERRORS----------101-------------" + lang_errors.full_messages.inspect if params[:user] @user.state = params[:user][:state] success = success & @user.save end logger.debug "--------------------LANG_ERRORS-------------102----------" + lang_errors.full_messages.inspect if lang_errors.full_messages.empty? @user对象lang_errors向update_lanugages方法中的变量添加错误。当我在@user对象上执行保存时,我丢失了最初存储在lang_errors变量中的错误。 虽然我尝试做的事更多的是破解(似乎没有用)。我想了解为什么变量值会被冲掉。我了解按引用传递,所以我想知道如何将值保留在该变量中而不会被淘汰。

7
在C#中按引用或值传递对象
在C#中,我一直认为非原始变量是通过引用传递的,原始值是通过值传递的。 因此,当将任何非原始对象传递给方法时,对该方法中的对象执行的任何操作都会影响要传递的对象。(C#101的东西) 但是,我注意到当我传递System.Drawing.Image对象时,似乎不是这样吗?如果我将system.drawing.image对象传递给另一个方法,然后将图像加载到该对象上,然后让该方法超出范围并返回到调用方法,则该图像未加载到原始对象上吗? 为什么是这样?


13
通过C#中的引用传递属性
Наэтотвопросестьответына 堆栈溢出нарусском:Передачасвойствасметодсмодификатором裁判и出 我正在尝试执行以下操作: GetString( inputString, ref Client.WorkPhone) private void GetString(string inValue, ref string outValue) { if (!string.IsNullOrEmpty(inValue)) { outValue = inValue; } } 这给了我一个编译错误。我认为我正在努力实现的目标很明确。基本上,我想GetString将输入字符串的内容复制到的WorkPhone属性Client。 是否可以通过引用传递属性?

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.