添加到嵌套列表时的NullReference

时间:2016-08-18 10:53:10

标签: c# nested-lists

我有课

public class Gallery
{
    public string method { get; set; }
    public List<List<object>> gidlist { get; set; }
    public int @namespace { get; set; }
}

按钮代码

private void button1_Click(object sender, EventArgs e)
{
    List<object> data = new List<object>();
    data.Add(618395);
    data.Add("0439fa3666");

    Gallery jak = new Gallery();
    jak.method = "gdata";
    jak.gidlist.Add(data);
    jak.@namespace = 1;

    string json = JsonConvert.SerializeObject(jak);
    textBox2.Text = json;
}

这里我得到System.NullReferenceException。如何将项目添加到gidlist?

1 个答案:

答案 0 :(得分:4)

你得到它,因为现在你在jak中初始化了列表。

你可以:

  1. 添加默认构造函数并在其中初始化列表:

    public class Gallery
    {
        public Gallery()
        {
            gidlist = new List<List<object>>();
        }
    
        public string method { get; set; }
        public List<List<object>> gidlist { get; set; }
        public int @namespace { get; set; }
    }
    
  2. 如果在C#6.0中,则可以使用自动属性初始值设定项:

    public List<List<object>> gidlist { get; set; } = new List<List<object>>()
    
  3. 如果在C#6.0下,并且不想要某些构造函数选项 原因是:

    private List<List<object>> _gidlist = new List<List<object>>(); 
    public List<List<object>> gidlist 
    {
        get { return _gidlist; } 
        set { _gidlist = value; }
    }
    
  4. 您可以在使用前初始化它(我不建议使用此选项)

    Gallery jak = new Gallery();
    jak.method = "gdata";
    jak.gidlist = new List<List<object>>();
    jak.gidlist.Add(data);
    jak.@namespace = 1;
    
  5. 如果在C#6.0之前,最佳做法是选项1.如果是6.0或更高,那么选项2。