对于每个循环迭代计数不正确

本文关键字:不正确 迭代 于每个 循环 | 更新日期: 2023-09-27 18:36:58

我有一个有 38 条记录的 IList,当我使用 foreachloop 迭代它时,它只迭代两次。我不知道这是为什么!

foreach (UserRecord rec in userlist)
{
    dictionary.Add(rec.Login, rec.Group);
}

任何想法都会有很大的帮助。

对于每个循环迭代计数不正确

恕我直言,最可能的原因是一个引发的异常。让我们修改您的解决方案(仅用于测试目的)并调试

foreach (UserRecord rec in userlist) {
  if (null == rec) 
    MessageBox.Show("rec is null!");              // <- put a break point here
  else if (null == rec.Login)
    MessageBox.Show("rec.Login is null!");        // <- here
  else if (dictionary.ContainsKey(rec.Login))
    MessageBox.Show("rec.Login already exists!"); // <- and here 
  else
    dictionary.Add(rec.Login, rec.Group);
}

我猜当你添加到字典时会抛出一个例外。

试试这个:

int Count = 0;
foreach (UserRecord rec in userlist)
{
    try
    { 
        dictionary.Add(rec.Login, rec.Group); 
    } 
    catch//(Exception ex)
    {
        //Console.WriteLine("Exception: " + ex.Message + "'nStackTrace: " + ex.Stacktrace);
    }
    finally
    {
        Count++;
    }
}
MessageBox.Show("Number of iterations = " + Count);
for(int i = 0 ; i < userlist.Count ; i++)
{
   try
   {
       dictionary.Add(userlist[i].Login, userlist[i].Group);
   }
   catch(Exception ex)
   {
      //check here witch userlist is throwing exception
   }
}
  • 为了更好地理解你的问题,总是在你的代码中写下 catch 尝试。