类中的 foreach 会导致错误“对象引用未设置为对象的实例”
本文关键字:设置 实例 对象引用 对象 错误 foreach | 更新日期: 2023-09-27 18:36:29
当我运行此代码时,出现错误"对象引用未设置为对象的实例"扔了,我不知道为什么。
我已经使用调试在某些点上破坏了代码,我注意到它在传递子注释的foreach后会导致错误。
我很高兴有人能阐明这个问题
我的Xml:
<?xml version='"1.0'" encoding='"utf - 8'"?>
<data type='"array'" success='"1'" status='"200'">
<item>
<id>1</id>
<comment>aaa</comment>
<author>john</author>
<children/>
</item>
<item>
<id>2</id>
<comment>bbb</comment>
<author>paul</author>
<children>
<item>
<id>3</id>
<comment>ccc</comment>
<author>lisa</author>
<children/>
</item>
</children>
</item>
我的代码:
XDocument document = XDocument.Parse(xml);
foreach (XElement item in document.Root.Elements("item"))
{
post.comments.Add(new Comment(item));
}
我的班级:
public class Comment
{
public string id { get; set; }
public string comment { get; set; }
public string author { get; set; }
public IList<Comment> children { get; set; }
public Comment(XElement elem)
{
id = elem.Element("id").Value.ToString();
comment = elem.Element("comment").Value.ToString();
author = elem.Element("author").Value.ToString();
foreach (XElement childComment in elem.Element("children").Elements())
{
children.Add(new Comment(childComment));
}
}
}
Comment
的构造函数假定public IList<Comment> children
已初始化,但没有实际创建列表的代码。
如果您有权访问System.Linq
这是最简单的:
children = elem.Element("children").Elements().Select(el => new Comment(el)).ToList();
如果不能包含using System.Linq
,则可以简单地在循环之前初始化children
成员:
children = new List<Comment>();
foreach (XElement childComment in elem.Element("children").Elements())
{
children.Add(new Comment(childComment));
}