ListItems有一个总是给出类型不匹配异常的项。代码行'ListItems中的MyItem项目'会导致引发异常,因为Listitems和MyItem之间存在某种类型的不匹配。如何忽略类型不匹配例外并移至下一个元素。如果它会进入foreach循环,我可以使用'continue'。但代码甚至不输入每个循环C#在异常时跳过foreach循环
foreach (MyItem items in ListItems)
{
...Do...
}
ListItems有一个总是给出类型不匹配异常的项。代码行'ListItems中的MyItem项目'会导致引发异常,因为Listitems和MyItem之间存在某种类型的不匹配。如何忽略类型不匹配例外并移至下一个元素。如果它会进入foreach循环,我可以使用'continue'。但代码甚至不输入每个循环C#在异常时跳过foreach循环
foreach (MyItem items in ListItems)
{
...Do...
}
您需要过滤掉所以只处理MyItem
项目。一定要包括System.Linq
命名空间和做
foreach (MyItem items in ListItems.OfType<MyItem>())
{
...Do...
}
这将过滤列表,并且只返回它从MyItem
我会推荐使用IEnumerable.OfType
。这就像对每个项目使用is MyItem
测试,并且只选择 - 并因此循环 - 测试为真的项目。 (它实际上还执行铸造,这确保了例外结果序列类型,但只有当它可以。)
foreach (var items in ListItems.OfType<MyItem>()) {
// items not "of" MyItem will be skipped
}
在另一方面,原来的代码是这样一个直接(MyItem)
铸造上的每个项目,这可能会导致InvalidCastException失败。
非常感谢得到的项目。我不知道OfType的命令 – michael