亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

c#高手進。。。。

c#高手進。。。。

收到一只叮咚 2018-12-06 23:49:44
for (int i = 1; i < 100; i++)??????????? {??????????????? ThreadPool.QueueUserWorkItem((o) =>??????????????? {??????????????????? int z = i;??????????????????? Thread.Sleep(1000);??????????????????? Console.Write(z.ToString()); ??????????????????? Console.Write(Environment.NewLine); ??????????????? });??????????? } 為啥輸出的都是100呢,,不是用z保存了變量了嗎
查看完整描述

9 回答

?
隔江千里

TA貢獻1906條經驗 獲得超10個贊

for (int i = 1; i < 100; i++)??????????? {??????????????? ThreadPool.QueueUserWorkItem((o) =>??????????????? {??????????????????? int z = (int)o;??????????????????? Thread.Sleep(1000);??????????????????? Console.Write(z.ToString());???????????????????? Console.Write(Environment.NewLine);???????????????? },i);??????????? }
查看完整回答
反對 回復 2018-12-09
?
海綿寶寶撒

TA貢獻1809條經驗 獲得超8個贊

老兄位置放錯啦!~ ?看我這個吧: for (int i = 1; i < 100; i++) { ThreadPool.QueueUserWorkItem(start => { int z = i; Console.WriteLine(z.ToString()); }); Thread.Sleep(1);//在循環中需要調用一下,由于被置于ThreadPool中的操作是異步,所以還沒有來的執行,z就被for循環改變,永遠是100 }
查看完整回答
反對 回復 2018-12-09
?
慕神8447489

TA貢獻1780條經驗 獲得超1個贊

z不是值類型嘛?
查看完整回答
反對 回復 2018-12-09
?
慕碼人2483693

TA貢獻1860條經驗 獲得超9個贊

@彬彬@科比: 其實他回答得不是z是否是值類型,而是在第一次執行int z = i;這句的時候,i已經是100了。
查看完整回答
反對 回復 2018-12-09
?
一只名叫tom的貓

TA貢獻1906條經驗 獲得超3個贊

@滴答的雨:?for循環不就是添加99個操作到線程池中嘛。。怎么會i已經是100呢?。??
查看完整回答
反對 回復 2018-12-09
?
墨色風雨

TA貢獻1853條經驗 獲得超6個贊

@滴答的雨:?這段代碼的執行順序到底是怎樣的??線程次里面什么時候才執行
查看完整回答
反對 回復 2018-12-09
?
UYOU

TA貢獻1878條經驗 獲得超4個贊

還沒有來得及執行是什么意思??難道會等for循環執行后才執行???
查看完整回答
反對 回復 2018-12-09
?
富國滬深

TA貢獻1790條經驗 獲得超9個贊

你的問題可能也已經解決了,但是這個問題你為什么沒排查出來錯誤?按說應該可以的,你應該沒有斷點調試吧。有時候斷點很方便的
查看完整回答
反對 回復 2018-12-09
?
汪汪一只貓

TA貢獻1898條經驗 獲得超8個贊

i是公共的變量。你所有的100個后臺的線程都是有了它,這個情況下你輸出的時候,主線程for循環已經走完,此時i是100,你說不是100,難道是1 , 2, 3。。。。。 什么的? 如果要輸入1,2,3..... for (int i = 1; i < 100; i++)??????????? { int z = i;??????????????? ThreadPool.QueueUserWorkItem((o) =>??????????????? {??????????????????? Thread.Sleep(1000);??????????????????? Console.Write(z.ToString());???????????????????? Console.Write(Environment.NewLine);???????????????? });??????????? }
查看完整回答
反對 回復 2018-12-09
  • 9 回答
  • 0 關注
  • 394 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號