假设我有这些课程:
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] 始终是动物,而不是老虎
假设我有这些课程:
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)