0

我得到一个对我来说没有意义的空引用异常。它在 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(',');
    }
}
4

3 回答 3

3

这是因为fileInput.ReadLine()返回null并且您不能在那里进行拆分

尝试这种方法添加一些空条件运算符( ?.)

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(',');
        }
    }
于 2018-10-05T03:08:21.237 回答
2

我想fileInput.ReadLine()返回null,你不能称之为Split()......

于 2018-10-05T03:02:42.150 回答
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])有问题。

于 2018-10-05T04:31:28.090 回答