我在网上看到一段代码,指出调用这样的线程会导致不确定的输出“0223557799”或类似的东西。(你明白了)
for (int i = 0; i < 10; i++)
new Thread (() => Console.Write (i)).Start();
这是给出的原因:
“问题是 i 变量在循环的整个生命周期中都指向相同的内存位置。因此,每个线程都会调用 Console.Write 变量,其值可能会在运行时发生变化!”
但是,按照惯例,当参数按值传递时——每个新的 Thread 调用都应该发送它的增量顺序,对吗?只有当值通过引用传递时,上述原因才成立。那么,在 C# 多线程中,值是否通过引用传递?
我是 C# 新手,请理解这个问题是否幼稚。