繁体   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