2011-11-21 19 views
13

Ho una lista (denominata Within) e contiene oggetti di tipo GameObject. GameObject è una classe padre per molti altri, tra cui Dog e Ball. Voglio fare un metodo che ritorna vero se Entro contiene qualsiasi oggetto di tipo Ball, ma non so come fare questo.Come posso verificare se un elenco contiene un oggetto di un certo tipo? C#

Ho provato a utilizzare Count<>, Any<>, Find<> e alcuni altri metodi forniti in C#, ma non sono riuscito a farli funzionare.

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

risposta

9

in non-LINQ se siete interessati

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()) 

Il parametro generico di tutti i metodi LINQ eccetto Cast<T>() e OfType<T>() è utilizzato per consentire la chiamata al metodo per compilare e deve essere compatibile con il tipo di lista (o per un getto covariante). Non possono essere utilizzati per filtrare per tipo.

Problemi correlati