说我有这些课程:
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]始终是动物,而不是老虎
答案 0 :(得分:2)
您可以使用Enumerable.OfType<TResult> Method
之类的:
var tigersInArray = p.OfType<Tiger>();
以上内容会从数组中返回Tiger
(s)。
您的支票(p[0] is Tiger)
应该有效,请确保Tiger位于阵列中的0
位置。
答案 1 :(得分:1)
它是动物和虎,因为虎是动物。只要将Tiger放入数组中,就会丢失有关特定类型的信息,但对象本身仍然知道。
你仍然可以找出它的类型并将其丢回:
if (p[0] is Tiger)
Tiger tiger = (Tiger)p[0];
或
Tiger tiger = p[0] as Tiger;
if (tiger != null)
...
答案 2 :(得分:0)
你试过这个吗?
p[0].GetType() == typeof(Tiger)