源码地址: https://gitee.com/zhang_jianli

.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 在这里是局部变量,没有缓存值。
 

 

posted on 2011-09-26 12:24  天涯  阅读(350)  评论(0编辑  收藏  举报

导航

源码地址: https://gitee.com/zhang_jianli