如何检查List是否包含某种类型的对象? C#

时间:2011-11-21 18:47:12

标签: c# xna

我有一个列表(名为Within),它包含GameObject类型的对象。 GameObject是许多其他人的父类,包括DogBall。我想创建一个方法,如果Within包含Ball类型的任何对象,则返回true,但我不知道如何执行此操作。

我尝试过使用Count<>Any<>Find<>以及C#中提供的其他一些方法,但我无法让它们发挥作用。

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

2 个答案:

答案 0 :(得分:52)

if (within.OfType<Ball>().Any())

除了Cast<T>()OfType<T>()之外的所有LINQ方法的泛型参数用于允许方法调用进行编译,并且必须与列表的类型兼容(或者用于协变强制转换)。它们不能用于按类型过滤。

答案 1 :(得分:9)

如果您有兴趣

,请参阅非linq
public bool DetectBall(List<GameObject> Within)
{
    foreach(GameObject go in Within)
    {
        if(go is Ball) return true;
    }

    return false;
}