!= Null while循环

时间:2018-10-05 02:56:38

标签: c#

我收到了一个空引用异常,这对我来说毫无意义。在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(',');
    }
}

3 个答案:

答案 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])被错误了。