C# 确定列表相等性的if-else语句中的无限循环
我有一段代码,用于检查列表的大小是否相等。如果它们的大小相等,并且C# 确定列表相等性的if-else语句中的无限循环,c#,C#,我有一段代码,用于检查列表的大小是否相等。如果它们的大小相等,并且\u cachedSecondList的所有元素都等于secondList,那么它什么也不做(尽管在这个特定示例中我有一些调试文本) 否则,如果计数相等,但每个列表中的项目不同,则会触发刷新画布的菜单\u HandleOutOfBounds() if (_cachedSecondList.Count == secondList.Count) { if (_cachedSecondList.SequenceEqual(sec
\u cachedSecondList
的所有元素都等于secondList
,那么它什么也不做(尽管在这个特定示例中我有一些调试文本)
否则,如果计数
相等,但每个列表中的项目不同,则会触发刷新画布的菜单\u HandleOutOfBounds()
if (_cachedSecondList.Count == secondList.Count)
{
if (_cachedSecondList.SequenceEqual(secondList))
{
string s = String.Join(",", _cachedSecondList);
string b = String.Join(",", secondList);
MessageBox.Show("Second: " + s);
MessageBox.Show("Second: " + b);
return;
}
else
{
Menu_HandleOutOfBounds(_sender, _e);
MessageBox.Show("Triggered Equality Check. New Index: " + _index);
}
}
出于某种非常奇怪的原因,if
和else
都在我的代码中被触发,每次我都被困在一个无限循环中
如果.SequenceEqual()
条件中的条件满足,我尝试将返回值设置为退出循环,但没有效果
第一个消息框:
第二个消息框:
第三个消息框:
您确定您的整个代码不会被调用两次吗?尝试放置断点以跟随代码流,我怀疑之后的两个代码块是否都是一个接一个地执行的和else
。我无法使用断点或正常调试方法,因为我正在创建一个类库,它被编译成.dll,然后在Grasshopper 3D中使用,还有Rhino图形编程插件。你以前没有while
循环或foreach
吗?或者,如果所有这些都在一个函数中,那么函数不是被多次调用吗?尝试将一个msgBox放在被剪断的代码之外,看看它是否被调用两次。@TheGreenColle然后使用一种很好的老方法,每两行代码放置一个MessageBox.Show(),以跟踪执行的内容。@ken2k我就是这么做的,但没有用。到处都有无限的循环。