2013-06-25 105 views
-7

我遇到問題處理我的foreach循環。我不知道爲什麼,但是當我調試它時,我的顆粒計數等於零。它應該是103.當我運行該程序時,它不顯示任何結果。我的代碼中是否遺漏了某些內容?foreach循環計數器不工作

代碼:

List<Pellets> pellets = new List<Pellets>(); 
bool gotPellet = false; 
foreach (var pellet in pellets) 
{ 
    if (pellet.Visibility == Visibility.Visible) 
    { 
     var rectPellet = pellet.GetRect(cnvMain); 
     var pelletCellPoint = pellet.GetCellPoint(); 

     rectPacman.Intersect(rectPellet); 
     gotPellet = true; 

     pellet.Visibility = Visibility.Collapsed; 

     AddPellet(pellet); 
     mazeValues[(int)pelletCellPoint.X, (int)pelletCellPoint.Y] = ' '; 
     break; 
    } 
} 

我使用Windows 8 Metro應用C#

+0

你沒有調試器嗎? – paxdiablo

+0

只是一瞥,'break'會跳出'foreach' –

+3

您刪除第一行中的所有顆粒 – Sayse

回答

7

pellets列表不能有它的103元,因爲你的代碼的頂部創建一個新的列表,並沒有增加任何內容。

+2

儘管遭受酷刑英語,這確實是正確的。讓我們來看看我們是否可以改進:-) – paxdiablo

+3

我更喜歡編輯前的'newing-up' :) –

+0

「顆粒」長度103是怎樣的?你在循環之前初始化列表,那個夥伴怎麼樣? – bazz

0
List<Pellets> pellets = new List<Pellets>(); 

你的列表是空的,所以你的foreach循環什麼都不做。

0
List<Pellets> pellets = new List<Pellets>(); 

此時您已經創建了一個新的清單。您不添加任何成員,因此當您嘗試枚舉它時,此列表仍然爲空。