2

私は 3 つの異なるクラス、一般的な「エンティティ」クラス、およびこれを継承する 2 つのクラス、弾丸クラスと敵クラスを持っています。

次に、リスト内の弾丸と敵を含むエンティティ クラスのリストと、これらを同じように扱う多くの場所を取得します。ただし、クラスの 1 つだけをループして、他のクラスはループしたくない場合があります。たとえば、各弾丸をループしますが、敵はループしません。これを行う方法はありますか?

私は試した

foreach (Bullet tempBullet in entities)

しかし、私はエラーが発生します

タイプ「敵」のオブジェクトをタイプ「弾丸」にキャストできません。

これが可能かどうか誰でも知っていますか、それとも別のリストを使用する必要がありますか?

4

2 に答える 2

5

おそらく少しLinqを使用できます:

foreach (var bullet in entities.OfType<Bullet>())
{

}
于 2010-10-18T10:06:37.540 に答える
1

.NET 2 を使用している場合:

foreach (Entity ent in entities) {
    Enemy e = ent as Enemy;
    Bullet b = ent as Bullet;

    if (e != null) {
        // process enemy
    }
    else if (b != null) {
        // process bullet
    }
}

または、linq を使用して (およびentitiesを継承するオブジェクトですIEnumerable<T>):

foreach (Bullet bullet in entities.OfType<Bullet>()) {
    // process bullets only
}
于 2010-10-18T10:07:15.797 に答える