参考未设置空行错误

时间:2013-04-15 15:59:35

标签: c# arrays split streamreader

当我从文件中读取并且文件空行时我收到此错误,我希望循环停在空行但是我收到此错误,我应该怎么做?

string[] delim = new string[] { "," };
bool eof=false;
int k=0;
do
{
   string[] linie =  sr.ReadLine().Split(delim, StringSplitOptions.None);

   if (String.IsNullOrWhiteSpace(linie[0]))
      eof = true;
   else
   {
      A[k] = double.Parse(linie[0]);
      l[k] = Convert.ToInt32(linie[1]);
      c[k] = Convert.ToInt32(linie[2]);
   }
   k++;
 }
 while (!eof);

错误在于:string[] linie = sr.ReadLine().Split(delim, StringSplitOptions.None);

2 个答案:

答案 0 :(得分:3)

将你的陈述分成多行:

String line = sr.ReadLine();
if (!String.IsNullOrEmpty(line))
{
    string[] linie = line.Split(delim, StringSplitOptions.None);
    //The rest of your code
}

正如杰夫指出的那样,如果你有> .Net4然后你可以使用IsNullOrWhiteSpace

答案 1 :(得分:0)

当您到达文件末尾时,sr.ReadLine()会返回null。因此,当您尝试拆分null时,您将获得NullReferenceException

在进行拆分之前,您应该检查null。

组织你的可能性的另一种方法可能是:

string line;
while ((line = sr.ReadLine()) != null)
{
}