[英]Accessing an object of a particular sub class from an array of abstract type objects
我有一個快速的問題。
我有一些課程,比如Class SubA,SubB和SubC。 我也有一個抽象類,讓我們說父母
所以我有一個Parent對象數組,其中包含SubA,SubB和SubC的實例。
我基本上試圖循環遍歷數組或父母並獲得SubA的特定實例。
我已經刪除了以下內容,但它產生了一個類型異常:
foreach (SubA a in Parent.GetList())
任何幫助將不勝感激。
是的,當前代碼具有隱式轉換,如果您的集合中有“錯誤”類型的對象,則會失敗。 我建議你使用LINQ的OfType
方法:
using System.Linq; // Make LINQ extension methods available
...
foreach (SubA a in Parent.GetList().OfType<SubA>())
{
...
}
請注意,上面的a
永遠不會為空 - 我假設沒關系。
使用OfType<T>
在此處記錄 。
foreach(SubA a in Parent.GetList().OfType<SubA>())
要獲取特定實例,可以在陣列上使用Single或SingleOrDefault擴展方法。 如果集合不包含匹配元素,Single將拋出異常; SingleOrDefault將返回null。
如果您正在尋找某種類型的一個對象
var result = parents.Single(p => p is SubA);
如果對象有密鑰
var result = parents.Single(p => p is SubA and p.Id == id);
或者您提供允許您識別實例的任何條件。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.