2013-06-25 67 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>(); 

此时您已经创建了一个新的清单。您不添加任何成员,因此当您尝试枚举它时,此列表仍然为空。