原理:线程是延迟启动,启动线程不阻塞主线程,线程启动是,i 已经被重新赋值
1、不用中间变量
for (int i = 0; i < 20; i++) { Task.Run(() => { Console.WriteLine(i); }); }
2、使用中间变量
for (int i = 0; i < 20; i++) { int k = i; Task.Run(() => { Console.WriteLine($"i={i},k={k}"); }); }