我收到了一个空引用异常,这对我来说毫无意义。在while循环的最后一行被调用。文件基本上是一个csv,始终具有3个值,以逗号分隔,每一行都需要一个信用卡对象。如果我使用不同的变量在循环内进行拆分,则该方法有效,但我不明白为什么。
using (StreamReader fileInput = File.OpenText("Assignment5.txt"))
{
String[] line = fileInput.ReadLine().Split(',');
while (line != null) // read each line
{
cards.Add(new CreditCard(line[0], double.Parse(line[1]), double.Parse(line[2])));
line = fileInput.ReadLine().Split(',');
}
}
答案 0 :(得分:3)
这是因为fileInput.ReadLine()
返回 null ,并且您不能在那里进行 split 。
尝试这种方法,添加一些null-conditional operators(?.
)
using (StreamReader fileInput = File.OpenText("Assignment5.txt"))
{
//Add null operator here
String[] line = fileInput.ReadLine()?.Split(',');
while (line != null)//read each line
{
cards.Add(new CreditCard(line[0], double.Parse(line[1]), double.Parse(line[2])));
//Add nulls operators here
line = fileInput.ReadLine()?.Split(',');
}
}
答案 1 :(得分:2)
我想fileInput.ReadLine()
返回null
,而您不能调用Split()
...
答案 2 :(得分:0)
修改了代码:
string[] line;
while ((line = fileInput.ReadLine().Split(',')) != null) // read each line
cards.Add(new CreditCard(line[0], double.Parse(line[1]), double.Parse(line[2])));
您还可以使用!string.IsNullOrWhitespace。
顺便说一句,此代码line[0], double.Parse(line[1]), double.Parse(line[2])
被错误了。