【发布时间】:2017-02-16 09:04:07
【问题描述】:
在这些语句中(使用MoreLinq 运行):
var xml = @"
<div>
<p>
<h2>hey</h2>
</p>
<pre />
<h2 class=""cool"" />
<p>
<h2>okay</h2>
</p>
</div>
".Trim();
var div = XElement.Parse(xml);
var h2Elements = div.Descendants("h2");
h2Elements.ToList().ForEach(i =>
{
if(i.Parent.Name != "p") return;
i.Parent.ReplaceWith(i);
});
我看到i.Parent.ReplaceWith(i) 不会引发异常,但这会引发空引用异常(使用来自MoreLinq 的ForEach):
h2Elements.ForEach(i =>
{
if(i.Parent.Name != "p") return;
i.Parent.ReplaceWith(i);
});
我知道 LINQ 的 ToList() 正在制作列表的副本,但该副本不会也抛出异常吗?另外,这里是否发生了某种孤立引用的内存泄漏?
【问题讨论】:
标签: c# linq-to-xml morelinq