【发布时间】:2019-05-16 01:56:39
【问题描述】:
我在使用以下代码时遇到问题……当我运行它时,代码永远不会退出。我已经尝试调试了大约一个小时,但我完全不知道问题出在哪里。输出调试();本质上就像 Console.WriteLine();
//Iterate through all lines to find sections
using (StringReader lineReader = new StringReader(Program))
{
int i = 0;
string line = string.Empty;
while (line != null)
{
line = lineReader.ReadLine();
if (line != string.Empty)
{
//If the program is exiting (doExit == true), then break the lööp bröther
if (doExit)
break;
//Iterate through all characters in the line
foreach (char Character in line)
{
i++;
OutputDebug(i.ToString());
if (isOnSameLineAsSectionStart)
{
sectionName += Character;
}
else if (Character == ':' && sectionName == string.Empty)
{
isOnSameLineAsSectionStart = true;
}
else if (Character == ':' && !isOnSameLineAsSectionStart && sectionName != string.Empty)
{
OutputDebug("End of section \"" + sectionName + "\" found");
OutputDebug(linesInSection.Count() + " lines found total in " + sectionName + "\" during section search");
try
{
sections.Add(sectionName, linesInSection);
}
catch (Exception)
{
OutputError("Two/Multiple sections with the same names exist. Ignoring the latest section with the same name");
}
linesInSection = new List<string>();
sectionName = string.Empty;
isOnSameLineAsSectionStart = true;
}
}
if (!isOnSameLineAsSectionStart && sectionName != string.Empty)
{
linesInSection.Add(line);
}
if (isOnSameLineAsSectionStart && sectionName != string.Empty)
{
OutputDebug("Start of section \"" + sectionName + "\" found");
}
if (isOnSameLineAsSectionStart == true)
{
isOnSameLineAsSectionStart = false;
}
}
lineReader.Close();
OutputDebug("In StringReader!" + i);
}
提前致谢!
【问题讨论】:
-
是的,看看
line变量的内容是什么(您用作while循环的退出条件的变量)。你注意到什么了吗? -
i永远不会设置为null,因此while循环的条件永远不会是true(并且不会终止)。 -
为什么不用
string.IsNullOrEmpty()方法? -
调试器单步调试时看到了什么?
-
好的,所以这段代码是你认为有问题的总结,但这段代码甚至不会运行。您必须向我们展示实际存在您描述的问题的代码。我们不是魔术师
标签: c# stringreader