簡體   English   中英

從抽象類型對象數組中訪問特定子類的對象

[英]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.

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