2011-11-21 21 views
13

Mam listę (o nazwie Within) i zawiera obiekty typu GameObject. GameObject to klasa dla wielu innych osób, w tym Dog i Ball. Chcę utworzyć metodę, która zwraca wartość true, jeśli w ramach zawiera dowolny obiekt typu Ball, ale nie wiem jak to zrobić.Jak sprawdzić, czy lista zawiera obiekt określonego typu? C#

Próbowałem już używać Count<>, Any<>, Find<> i kilku innych metod dostępnych w języku C#, ale nie mogłem ich uruchomić.

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

Odpowiedz

9

w non-LINQ Jeśli jesteś zainteresowany

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

Parametr generic wszystkich metod LINQ wyjątkiem Cast<T>() i OfType<T>() jest używany, aby umożliwić wywołanie metody, aby skompilować i musi być zgodny z typem listy (lub dla kowariantna cast). Nie można ich użyć do filtrowania według typu.

Powiązane problemy