2011-11-21 21 views
13

Listem var (Within) ve GameObject türünde nesneler içeriyor. GameObject, Dog ve Ball dahil olmak üzere bir çokları için bir üst sınıftır. İçinde Ball türünde herhangi bir nesne içeriyorsa true olarak döndüren bir yöntem yapmak istiyorum, ancak bunu nasıl yapacağımı bilmiyorum.Bir Listenin belirli türde bir nesne içerip içermediğini nasıl kontrol ederim? C#

Count<>, Any<>, Find<> ve C# içinde sağlanan diğer birkaç yöntemi kullanmayı denedim, ancak onları işe alamadım.

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

cevap

9

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

Cast<T>() ve OfType<T>() dışındaki tüm LINQ yöntemlerin genel parametre hazırlanması için bir yöntem çağrısı izin vermek için kullanılır ve listenin tipi (veya bildirdiğinden döküm için) ile uyumlu olması gerekir. Türüne göre filtrelemek için kullanılamazlar. Eğer ilgileniyorsanız olmayan linq içinde

İlgili konular