首页 > 解决方案 > 初始化包含数组的嵌套对象

问题描述

我有一个需要填充一些数据的对象。但是当我尝试填充派对时,我得到一个空引用错误。

对象:https ://pastebin.pl/view/f9f34c0e (基本上是一个包含 2 个包含其他对象数组的对象的对象)

初始化:

Models.InHouse.TestSpec.InhouseOrder io = new Models.InHouse.TestSpec.InhouseOrder {
Header = new Models.InHouse.TestSpec.InhouseOrderHeader { Party = new Models.InHouse.TestSpec.InhouseOrderHeaderParty[10] },
content = new Models.InHouse.TestSpec.InhouseOrderContent { Item = new Models.InHouse.TestSpec.InhouseOrderContentItem[100] }};

但是当我尝试访问时, io.header.Party[0].ID我得到一个空引用错误。最后,我会将其序列化为 XML。

标签: c#.netxml

解决方案


那么当你初始化时:

Party = new Models.InHouse.TestSpec.InhouseOrderHeaderParty[10]

现在Party是一个Models.InHouse.TestSpec.InhouseOrderHeaderParty容量为 10 的数组,但这 10 个数组项的默认值为Models.InHouse.TestSpec.InhouseOrderHeaderPartynull。

您可以稍后执行以下操作:

for(int i=0; i< Party.Length; i++)
    Party[i] = new Models.InHouse.TestSpec.InhouseOrderHeaderParty();

更新(根据您的评论):

您可以初始化数组项目,如:

Header = Enumerable.Range(1,10).Select(x => new Models.InHouse.TestSpec.InhouseOrderHeaderParty()).ToArray();

推荐阅读