-1

假设我有这些课程:

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] 始终是动物,而不是老虎

4

3 回答 3

2

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

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

Tiger以上将从数组中返回您(s)。

您的检查(p[0] is Tiger)应该有效,确保您0在阵列中的位置上有老虎。

于 2013-04-25T12:52:35.067 回答
1

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

您仍然可以找出它的类型并将其转换回:

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

或者

Tiger tiger = p[0] as Tiger;
if (tiger != null)
    ...
于 2013-04-25T12:55:56.387 回答
0

你试过这个吗?

p[0].GetType() == typeof(Tiger)
于 2013-04-25T13:00:45.210 回答