在我的c#程序中,我正在从文本文件中读取行,并想检查我读入的行是否包含字符串“EHRS”,如果是,我想将该行放入数组,如果没有,我想在下一行阅读。当我运行它时,我收到一个错误,告诉我在使用contains函数的行发生了一个未处理的类型'System.NullReferenceException'的异常。
这就是我所拥有的:
string[] concArray = new string[numLinesConcYr];
using (var sr = new StreamReader(mydocpath + @"\concYrLines.txt"))
{
for (int i = 0; i < numLinesConcYr; i++)
{
concYrLine = sr.ReadLine();
if (concYrLine.Contains("EHRS") == true)
{
concArray[i] = concYrLine;
}
else
{
concYrLine = sr.ReadLine();
}
}
}
答案 0 :(得分:2)
返回值 键入:System.String 输入流中的下一行,如果到达输入流的末尾,则为 null 。
所以null
是预期的,你必须对它实施防御。
concYrLine = sr.ReadLine();
if (!string.IsNullOrempty(concYrLine) && concYrLine.Contains("EHRS"))
{
}
答案 1 :(得分:0)
每次读一行时,我的行都没有内容。对您已读取的行执行.Contains("")
检查取决于作为字符串实例返回的变量。对concYrLine
方法的.Contains()
proir执行空值检查。像这样:
for (int i = 0; i < numLinesConcYr; i++)
{
concYrLine = sr.ReadLine();
if (!String.IsNullOrEmpty(concYrLine) && concYrLine.Contains("EHRS") == true)
{
concArray[i] = concYrLine;
}
else
{
concYrLine = sr.ReadLine();
}
}