将记录添加到列表对象c#

时间:2017-09-08 09:53:13

标签: c# list parsing object

我在将列表添加到列表时遇到问题,列表是对象'TranchesDt'的参数。

public class TranchesDt
{
    public List<startup> tranches {get; set;}
    public List<reservation> reservations { get; set; }
    public List<location> locations { get; set; }
}

有代码,我将对象添加到'TranchesDt':

public static TranchesDt Parse(string filePath)
{
    string[] lines = File.ReadAllLines(filePath);
    TranchesDt dt = new TranchesDt();

    for (int i = 0; i < lines.Length; i++)
    {
        string recordId = lines[i].Substring(0, 2);

        switch (recordId)
        {
            case "11":
                {
                    dt.tranches.Add(Parse11(lines[i]));
                    break;
                }
            case "01":
                {
                    dt.locations.Add(Parse01(lines[i]));
                    break;
                }
            case "00":
                {
                    dt.reservations.Add(Parse00(lines[i]));
                    break;
                }
        }
    }
    return dt;
}

public static startup Parse11(string line)
{
    var ts = new startup();
    ts.code = line.Substring(2, 5);
    ts.invoice = line.Substring(7, 7);
    ts.amount = Decimal.Parse(line.Substring(14, 13));
    ts.model = line.Substring(63, 4);
    ts.brutto = Decimal.Parse(line.Substring(95, 13));

    return ts;
}

我得到了

  

System.NullReferenceException:未将对象引用设置为对象的实例。

dt.tranches.Add(Parse11(lines [i]))行 我的问题在哪里,我该如何解决?

1 个答案:

答案 0 :(得分:2)

您永远不会初始化List实例,因此dt.tranches为null。 (正如另外两个列表所示)

之后添加以下代码行
TranchesDt dt = new TranchesDt();

dt.tranches  = new List<startup>();
dt.reservations = new List<reservation>();
dt.locations = new List<location>();

注意语法错误。