-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配列からあなたを返します。

チェックが機能する(p[0] is Tiger)はずです。Tiger0が配列内の位置にあることを確認してください。

于 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 に答える