我有课
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?
答案 0 :(得分:4)
你得到它,因为现在你在jak中初始化了列表。
你可以:
添加默认构造函数并在其中初始化列表:
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; }
}
如果在C#6.0中,则可以使用自动属性初始值设定项:
public List<List<object>> gidlist { get; set; } = new List<List<object>>()
如果在C#6.0下,并且不想要某些构造函数选项 原因是:
private List<List<object>> _gidlist = new List<List<object>>();
public List<List<object>> gidlist
{
get { return _gidlist; }
set { _gidlist = value; }
}
您可以在使用前初始化它(我不建议使用此选项)
Gallery jak = new Gallery();
jak.method = "gdata";
jak.gidlist = new List<List<object>>();
jak.gidlist.Add(data);
jak.@namespace = 1;
如果在C#6.0之前,最佳做法是选项1.如果是6.0或更高,那么选项2。