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