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. 如果此答案适用于youTryFile.ReadLines
,请接受此答案作为解决方案。您会发现它更易于使用。请尝试File.ReadLines
。你会发现它更容易使用。