c# - 初始化包含数组的嵌套对象
问题描述
我有一个需要填充一些数据的对象。但是当我尝试填充派对时,我得到一个空引用错误。
对象: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。
解决方案
那么当你初始化时:
Party = new Models.InHouse.TestSpec.InhouseOrderHeaderParty[10]
现在Party
是一个Models.InHouse.TestSpec.InhouseOrderHeaderParty
容量为 10 的数组,但这 10 个数组项的默认值为Models.InHouse.TestSpec.InhouseOrderHeaderParty
null。
您可以稍后执行以下操作:
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();
推荐阅读
- python - 神经网络的前向传播
- apache-kafka - Kafka Joins - 我们如何实现它?
- java - Widfly 上的 Wicket 9 应用程序:java.lang.NoClassDefFoundError: net/sf/cglib/proxy/Callback
- c# - ISystemMediaTransportControls 的 C# 绑定
- oracle - Oracle SQL 删除尾随新行
- python - 按升序重命名唯一值 pandas 列
- c# - Xamarin.Essentials 共享可绘制对象
- java - 在 servlet 中将 InputStream 转换为 Json 的更好或更快的方法
- html - 如何在 TWebBrowser 中居中和拉伸/收缩 SVG 显示?
- flutter - Flutter 中未设置 PluginRegistrantCallback