一个相当简单的问题(我认为),但我似乎没看到已有的答案。我知道一些值是通过值传递的(比如int和long),而当您将它们传递给函数时,另一些值是通过引用传递的(比如字符串)。
在我的程序中,我使用了后台工作线程,以便在后台进行长时间的处理时,GUI不会锁定。我需要从另一个文件向UI线程传回数据,因此我一直在使用事件来处理。现在我需要将一个字符串数组的列表发送回GUI线程以在那里处理,我很担心它会被如何处理。基本上,在工作线程中,我有一个循环,将填充该列表,通过事件处理程序将其发送回GUI,然后清除它,以便能够在下一次循环中重新填充它并重新开始。
我担心当我这样做时,如果列表是通过引用传递的,那么在UI线程上,我会认为它会在中途读取时被清除,因为工作线程仍将在后台清除它。在这种情况下,传递方式将更可取,并且我可以找到方法来强制执行它(将其复制到某个持有器数组中或添加互斥量或类似的东西),但我认为知道事件参数是否通常通过引用或值传递是有好处的,或者它是否就像方法一样,将其作为通常传递的参数传递?
array1
的值只是一个引用。所有赋值都只是将一个表达式的值复制到变量(或属性)中。 - Jon Skeet