C# 我得到了一个“答案”';System.ArgumentOutOfRangeException'&引用;什么时候使用循环? var-orth=node2.substands(“span”).ToList().FindAll(x=>x.GetAttributeValue(“class”),Contains(“orth”); var type_translation=node2.substands(“span”).ToList().FindAll(x=>x.GetAttributeValue(“class”),Contains(“cit-cit-type translation”); if(type_translation!=null) { 对于(int i=0;i
您循环条件要求两个集合的最大计数-C# 我得到了一个“答案”';System.ArgumentOutOfRangeException'&引用;什么时候使用循环? var-orth=node2.substands(“span”).ToList().FindAll(x=>x.GetAttributeValue(“class”),Contains(“orth”); var type_translation=node2.substands(“span”).ToList().FindAll(x=>x.GetAttributeValue(“class”),Contains(“cit-cit-type translation”); if(type_translation!=null) { 对于(int i=0;i,c#,wpf,html-agility-pack,C#,Wpf,Html Agility Pack,您循环条件要求两个集合的最大计数-i这是错误的: var orth = node2.Descendants("span").ToList().FindAll(x => x.GetAttributeValue("class", "").Contains("orth")); var type_translation = node2.Descendants("span").ToList().FindAll(x => x.GetAttributeValue("class", "").Cont
i这是错误的:
var orth = node2.Descendants("span").ToList().FindAll(x => x.GetAttributeValue("class", "").Contains("orth"));
var type_translation = node2.Descendants("span").ToList().FindAll(x => x.GetAttributeValue("class", "").Contains("cit cit-type-translation"));
if (type_translation != null)
{
for(int i=0;i<Math.Max(type_translation.Count(),orth.Count());i++)
{
if(orth.Count()!=0)
{
results.senselist += type_translation[i].InnerText.Trim() +
" " + orth[i].InnerText.Trim() +"\n";
}
else
{
results.senselist += type_translation[i].InnerText.Trim() + " ";
}
}
}
for(int i=0;i orth.Count
和orth.Count!=0
?类似地,当orth.Count>键入(u translation.Count
和orth.Count!=0
)时会发生什么?因为您的逻辑有缺陷,所以您有一个索引自动异常
我真的不知道你想在这里做什么,但这很混乱。我的建议是弄清楚你的不变量是什么。这两个集合之间的关系是什么?它们的大小不同有意义吗?如果有,是否允许其中一个大于另一个?同样,如果有,那么你需要确保i
小于索引前它们中任何一个的计数
现在这真是一团糟。我建议您尽早维护不变量,以便清理此逻辑。这与null无关,您正在尝试访问超过其长度的列表。您可以在执行orth[I]之前检查I
。您应该将源HTML与所需输出一起发布到问题中。我认为我们可以帮助清理代码。更新代码。谢谢
for(int i=0;i<Math.Max(type_translation.Count(),orth.Count());i++)
{
if(orth.Count()!=0)
{
results.senselist += type_translation[i].InnerText.Trim() + " " + orth[i].InnerText.Trim() +"\n";
// ...
}
}