对于每个循环迭代计数不正确
本文关键字:不正确 迭代 于每个 循环 | 更新日期: 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 尝试。