これらのクラスがあるとします:
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
配列からあなたを返します。
チェックが機能する(p[0] is Tiger)
はずです。Tiger0
が配列内の位置にあることを確認してください。
虎は動物なので、動物と虎です。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)