Видях част от код онлайн, който гласи, че извикването на нишка като тази причинява недетерминиран изход "0223557799" или нещо от този вид. (Разбрахте смисъла)
for (int i = 0; i < 10; i++)
new Thread (() => Console.Write (i)).Start();
Това е причината за това:
"Проблемът е, че променливата i се отнася до едно и също място в паметта през целия живот на цикъла. Следователно всяка нишка извиква Console.Write върху променлива, чиято стойност може да се промени, докато работи!"
Но, конвенционално казано, когато аргументът се предава по стойност - всяко ново извикване на нишка трябва да изпраща i неговия инкрементален ред, нали? Само ако стойностите се предават чрез препратка, горепосочената причина е валидна. И така, в C# Multi-Threading стойностите предават ли се по референция?
Нов съм в C#, моля, разберете, ако въпросът е наивен.