C# 空行处的引用未设置错误

C# 空行处的引用未设置错误,c#,arrays,split,streamreader,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]))

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

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)

将您的语句分成多行:

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

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

将语句分成多行:

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

正如Jeff所指出的,如果您有>.Net4,那么当您到达文件末尾时,
sr.ReadLine()
返回
null
,您就可以使用
IsNullOrWhiteSpace

。因此,当您尝试拆分
null
时,您将得到一个
NullReferenceException

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

另一种组织客户的方式可以是:

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

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

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

另一种组织客户的方式可以是:

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

不过,最好还是使用IsNullOrWhiteSpace(行)。没有理由切换到NullOrEmpty。@杰夫,我在使用.Net3。5@guNNer2bad. 如果仍然使用IsNullOrWhiteSpace(line)对您最有效,请接受这个答案作为解决方案。没有理由切换到NullOrEmpty。@杰夫,我在使用.Net3。5@guNNer2bad. 如果此答案适用于youTry
File.ReadLines
,请接受此答案作为解决方案。您会发现它更易于使用。请尝试
File.ReadLines
。你会发现它更容易使用。