类型数组中如何确定继承的类

本文关键字:继承 何确定 数组 类型 | 更新日期: 2023-09-27 18:11:03

假设我有这些class:

Class Animal;
Class Tiger: Animal;
Class Bear: Animal;
Class Giraffe: Animal;

和这个数组:

Animal[] p = [new Tiger(), new Bear(), now Giraffe()]

如何确定:

(p[0] is Tiger)

我得到一个消息,p[0]永远是一只动物,而不是一只老虎

类型数组中如何确定继承的类

您可以这样使用Enumerable.OfType<TResult> Method:

var tigersInArray = p.OfType<Tiger>();

上面的代码将从数组返回Tiger (s)。

你的检查(p[0] is Tiger)应该工作,确保你有老虎在位置0在数组。

这是一只动物一只老虎,因为老虎是动物。一旦将Tiger放入数组中,就会丢失关于特定类型的信息,但是对象本身仍然知道。

你仍然可以找出它的类型并将它强制转换回来:

if (p[0] is Tiger)
    Tiger tiger = (Tiger)p[0];

Tiger tiger = p[0] as Tiger;
if (tiger != null)
    ...

你试过了吗?

p[0].GetType() == typeof(Tiger)