簡體   English   中英

C#發生異常時跳過foreach循環

[英]C# Skip foreach loop when exception

ListItems具有一項始終會提供類型不匹配異常的項目。 代碼行“ ListItems中的MyItem項目”導致引發異常,因為Listitems和MyItem之間存在某些類型不匹配。 如何忽略類型不匹配異常並移至下一個元素。 如果它將進入foreach循環內,則可以使用“繼續”。 但是代碼甚至沒有為每個循環輸入

foreach (MyItem items in ListItems)
{
   ...Do...
}

我建議使用IEnumerable.OfType 這就像對每個項目使用is MyItem測試,並且僅選擇-從而遍歷-這樣的測試為真的項目。 (實際上,它也執行強制類型轉換,以確保排除結果序列類型,但前提是可以)

foreach (var items in ListItems.OfType<MyItem>()) {
   // items not "of" MyItem will be skipped
}

另一方面,原始代碼就像直接對每個項目(MyItem)進行強制轉換 ,可能會因InvalidCastException而失敗。

您需要過濾掉,以便僅處理MyItem項目。 確保包括System.Linq命名空間並執行

foreach (MyItem items in ListItems.OfType<MyItem>())
{
   ...Do...
}

這將過濾您的列表,並且僅返回從MyItem派生的項目

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM