Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/309.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 确定列表相等性的if-else语句中的无限循环_C# - Fatal编程技术网

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我就是这么做的,但没有用。到处都有无限的循环。