类型数组中如何确定继承的类
本文关键字:继承 何确定 数组 类型 | 更新日期: 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)