.net 变量缓存,你知道吗

for (int j = 0; j < 100; j++)
            {
                Task.Factory.StartNew(() => { Console.WriteLine(j); }, TaskCreationOptions.PreferFairness);
            }
            
        以上输出的是 100 个99,因为j被缓存,所以最后一次的值被存了下来,其他值被替代
for (int j = 0; j < 100; j++)
            {
                int tmp = j;
                Task.Factory.StartNew(() => { Console.WriteLine(tmp); }, TaskCreationOptions.PreferFairness);
            }
以上输出的是1,2,3,....99 值;
    原因是:j在这里是全局变量,缓存了值。而tmp 在这里是局部变量,没有缓存值。
 
原文地址:https://www.cnblogs.com/tianya/p/2191559.html