1
我有我的Form_Load方法验证码...看似古怪的行为
System.IO.StreamReader file = new System.IO.StreamReader(serverList);
Servers = new List<Server>();
String line;
//while ((line = file.ReadLine()) != null)
while (! file.EndOfStream)
{
line = file.ReadLine().Trim();
if (line[0] != '#' && line != "")
{
Servers.Add(new Server() { ServerName = line.Split('|')[0],
IPorHostname = line.Split('|')[1] });
}
else
{
MessageBox.Show("I don't understand what the debugger is doing! Is this a bug?");
}
}
我希望能够无视我从读文件中的空行,所以我增加了line != ""
并在if语句中检查它之前修剪该行。加载应用程序时,服务器列表将为空。所以我切换到调试模式,并进入这个代码。当line
为空时,我在if语句上按F11,调试/步进停止并显示应用程序。我期望发生的事情是回到while循环周围,但这并没有发生。
我添加了一个其他的消息框作为测试...消息框不显示!
总之,当line
为空时,既不执行真代码也不执行伪代码,并且调试器停止逐步执行代码。
这里发生了什么?我是否错过了明显的东西,或者这是Visual Studio中的错误?
我刚换了条件'line!=“”&& line [0]!='#'',我的代码按预期工作。你的回答是正确的,是有道理的。 (这让我感到莫名其妙)我会在8分钟内接受你的回答,当它允许我时:) – MrVimes
是的,修正了异常,但它不能解决你的其他问题,Form_Load中引发的异常会被无声地吞噬。你应该围绕该方法添加一个try/catch块,或者最好找到一个不同的事件来放置你的代码。 –
我将添加代码来处理异常,但现在,交换条件会使我的应用程序运行,更重要的是现在我明白发生了什么。 – MrVimes