c# - 从抽象类型对象数组访问特定子类的对象

标签 c# arrays list sorting object

我有一个简短的问题。

我有几个类,比如 Class SubA、SubB 和 SubC。 我也有一个抽象类,假设是 Parent

所以我有一个父对象数组,其中包含 SubA、SubB 和 SubC 的实例。

我基本上是在尝试遍历数组或 Parents 并获取 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 永远不会为 null - 我假设这没问题。

关于c# - 从抽象类型对象数组访问特定子类的对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19098862/

相关文章:

c# - 线程,流畅的 nhibernate 和保存数据陷入僵局

c# - 将详细表读取到 ASP.NET MVC 5 Identity 2

c# - 抽绳 onclick 方法 C#

arrays - Ruby 为版本字符串提供默认数组值的优雅方式

c - Malloc 在 adt 列表程序中返回 null

list - 按字典顺序创建值对 0 到 n-1 的列表

c# - 如何验证预期数组是 MSTest 中的实际数组?

C:填充多维数组

将数组与C中的二维数组进行比较

Python将包含列表的字典对象转换为包含字典的列表