2012-03-23 77 views
3

鑑於這種代碼:爲什麼foreach循環內的局部變量與循環外聲明的變量衝突?

爲什麼編譯器抱怨foo是聲明瞭兩次?當然,在foreach循環中聲明的實例只在循環的範圍內有效?

+0

http://blogs.msdn.com/b/ericlippert/archive/tags/declaration+spaces/ – CodesInChaos 2012-03-23 09:54:39

+0

我認爲你的論點在你考慮變量捕獲時發生故障 – 2012-03-23 09:56:01

+2

這個問題至少有6個重複。一個例子:[.NET如何處理範圍內的變量](http://stackoverflow.com/questions/9705115/how-does-net-handle-variables-inside-scope) – CodesInChaos 2012-03-23 09:56:19

回答

5

儘管在聲明它之後只能引用外部foo,但在函數的開始處會分配局部變量,這意味着即使尚未聲明內部foo也會使外部變暗。