2011-11-21 18 views
13

Tengo una lista (llamada Within), y contiene objetos del tipo GameObject. GameObject es una clase principal para muchos otros, incluidos Dog y Ball. Quiero hacer un método que devuelva verdadero si Within contiene cualquier objeto de tipo Ball, pero no sé cómo hacer esto.¿Cómo puedo verificar si una lista contiene un objeto de cierto tipo? C#

He intentado usar Count<>, Any<>, Find<> y algunos otros métodos proporcionados dentro de C#, pero no pude conseguir que funcionen.

public bool DetectBall(List<GameObject> Within) 
{ 
    //if Within contains any object of type ball: 
    { 
     return true; 
    } 
} 

Respuesta

9

en la no-LINQ si está interesado

public bool DetectBall(List<GameObject> Within) 
{ 
    foreach(GameObject go in Within) 
    { 
     if(go is Ball) return true; 
    } 

    return false; 
} 
43
if (within.OfType<Ball>().Any()) 

El parámetro genérico de todos los métodos de LINQ excepto Cast<T>() y OfType<T>() se utiliza para permitir la llamada de método para compilar y debe ser compatible con el tipo de la lista (o para un reparto covariante). No pueden usarse para filtrar por tipo.

Cuestiones relacionadas