ListItems有一个项目总是给出类型不匹配异常。由于Listitems和MyItem之间存在某些类型不匹配,代码行'ListItems中的MyItem项'会引发异常。如何忽略类型不匹配异常并移至下一个元素。如果它进入foreach循环内部,我可以使用'continue'。但是代码甚至没有进入每个循环
foreach (MyItem items in ListItems)
{
...Do...
}
答案 0 :(得分:6)
我建议使用IEnumerable.OfType
。这就像对每个项目使用is MyItem
测试一样,只选择 - 然后循环 - 这样的测试成立的项目。 (它实际上也执行强制转换,它确保了例外的结果序列类型,但只有当可以时。)
foreach (var items in ListItems.OfType<MyItem>()) {
// items not "of" MyItem will be skipped
}
另一方面,原始代码就像是对每个项目进行直接(MyItem)
投射,但可能会失败InvalidCastException。
答案 1 :(得分:4)
您需要过滤掉,以便只处理MyItem
个项目。请务必包含System.Linq
命名空间并执行
foreach (MyItem items in ListItems.OfType<MyItem>())
{
...Do...
}
这将过滤您的列表,只返回源自MyItem