C#初始化列表属性
本文关键字:属性 列表 初始化 | 更新日期: 2023-09-27 18:22:33
我有以下类。。。如何使用一些值进行初始化
我的问题是,我如何用Main中的一些值初始化上面的RootObject例如
Rootobject robj = new Rootobject();
robj.inchistor.Add()
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace JsonSample3
{
public class Customerinfo
{
public string customername { get; set; }
public string address { get; set; }
public string postcode { get; set; }
}
public class Inchistory
{
public Customerinfo customerinfo { get; set; }
public string r { get; set; }
public string reference { get; set; }
public string region { get; set; }
}
public class RootObject
{
public List<Inchistory> inchistory { get; set; }
}
}
class Program
{
static void Main(string[] args)
{
RootObject robj = new RootObject{ r = "", }
}
}
Am having above classes namely CustomerInfo, Inchistory and Rootobject
任何引用类型的默认值都是null
。所以我假设当你尝试添加值时,你得到了一个NullReferenceException
。您可以在对象的构造函数中将列表属性初始化为空列表:
public class RootObject
{
public List<Inchistory> inchistory { get; set; }
public RootObject()
{
inchistory = new List<Inchistory>();
}
}
现在,默认情况下,RootObject
的任何实例都将有一个有效(空)列表,允许您向其中添加:
Rootobject robj = new Rootobject();
robj.inchistor.Add(someInstanceOfInchistory);
不确定您在问什么。您是否正在寻找对象和集合初始化的组合?
RootObject robj = new RootObject()
{
inchistory = new List<Inchistory>()
{
new Inchistory()
{
r = "foo",
reference = "bar",
customerinfo = new CustomerInfo()
{
customername = "joe blogs",
address = "somewhere",
postcode = "xxx xxxx"
},
region = "somewhere"
},
new Inchistory()
{
// etc
}
}
};
或者,如果你现在没有东西要添加,你可以只做:
RootObject robj = new RootObject()
{
inchistory = new List<Inchistory>()
};
或者,您可以按照David的建议,在类构造函数中初始化列表。