C# System.ArgumentOutOfRangeException,但I';我不知道它在哪里;他来自哪里

C# System.ArgumentOutOfRangeException,但I';我不知道它在哪里;他来自哪里,c#,dijkstra,C#,Dijkstra,如果我违反了任何堆栈溢出问题规则,我会提前道歉,我尝试确保我所做的一切都是允许的,但我可能错过了一些东西。这是我第一次真正地问问题 我刚刚完成了一个程序,它使用Dijkstra的算法来寻找一个站点到所有其他站点之间的最短时间。我的程序正在运行,但当我键入开始点和停止点时,会出现以下错误: 我理解错误是什么,只是不知道它发生在哪里 在mscorlib.dll 其他信息: Index was out of range. Must be non-negative and less than the s

如果我违反了任何堆栈溢出问题规则,我会提前道歉,我尝试确保我所做的一切都是允许的,但我可能错过了一些东西。这是我第一次真正地问问题

我刚刚完成了一个程序,它使用Dijkstra的算法来寻找一个站点到所有其他站点之间的最短时间。我的程序正在运行,但当我键入开始点和停止点时,会出现以下错误:

我理解错误是什么,只是不知道它发生在哪里

mscorlib.dll

其他信息:

Index was out of range. Must be non-negative and less than the size of the collection.
我不想用大量的代码轰炸每个人。。。。所以我把一个链接放在我的dropbox位置:


再一次,如果我错过了一条规则,我很抱歉,我正在打破它。如果我是,请告诉我,我将尝试以适当的方式回答问题

使用Visual Studio,您可以在引发异常时通知调试器中断:


使用此技术,您应该能够找到根本原因。

您必须在代码中添加两个条件,如下所述

 if(Subway.Count>0)
            shortest.Add(Subway[s2]);

 int mins=0;
             if(Subway.Count>0)
             mins = Subway[s2].cost;

您的subway列表为空,但您仍然可以从中找到它并显示它将通过异常。

此时您应该学习使用调试器。欢迎使用SO!stacktrace怎么说?如果是调试生成,stacktrace应该包含行号,允许您精确定位错误发生的行。您只需发布错误发生的代码部分。