0

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

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);

4

2 回答 2

3

将您的语句分成多行:

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

正如 Jeff 指出的那样,如果你有 > .Net4 那么你可以使用IsNullOrWhiteSpace

于 2013-04-15T16:01:52.900 回答
0

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

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

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

string line;
while ((line = sr.ReadLine()) != null)
{
}
于 2013-04-15T16:03:01.170 回答