我有一个列表,我声明如下:
List<Person> persons = new List<Person>();
在我的代码的另一部分中,我使用LINQ查询初始化并填充列表,并从xml文件中获取数据。在这里注意并不重要。唯一要知道的是列表已初始化并确认填充了数据。
我的代码的另一部分使用WCF服务来查找列表中的人并获取其关联数据。在下面的代码中,变量ret
保存此数据。
ServiceClient client = new ServiceClient();
MyService.Person p = new MyService.Person();
for (int i = 0; i < persons.Count; i++)
{
p.PersonID = persons[i].PersonID;
p.FName = persons[i].FName;
p.LName = persons[i].LName;
var ret = client.GetFees(new MyService.Person[] { p });
for (int j = 0; j < ret[0].Fees.Length; j++)
{
persons[i].Fees[j] = ret[0].Fees[j].Amount;
}
}
client.Close();
我想要做的是从ret变量中获取 Amount 数据,并将其全部分配到人员列表费用属性中。在上面的代码中,这发生在这一行:
persons[i].Fees[j] = ret[0].Fees[j].Amount;
问题是我在Visual Studio上不断收到此错误:
我认为它与未被初始化的人员列表对象的费用数组属性有关,或类似的东西。
如果案例是我有一个具有list属性的Person类的person对象,我会像这样初始化它:
Person p = new Person();
p.Fees = new List<double>();
但事实并非如此。那么在这种情况下我该怎么办?换句话说,如何修复persons[i].Fees[j] = ret[0].Fees[j].Amount;
不抛出空引用异常??
我的最终目标是将费用数据存入人员列表的费用属性中,以便稍后我可以使用OrderBy方法对列表进行排序。但是现在我只需要摆脱这个错误。
提前感谢您的阅读。请帮忙。
答案 0 :(得分:1)
执行此操作
for (int j = 0; j < ret[0].Fees.Length; j++)
{
if(persons[i].Fees == null)
persons[i].Fees = new List<double>();
persons[i].Fees[j] = ret[0].Fees[j].Amount;
}