我有一个列表(名为Within
),它包含GameObject
类型的对象。
GameObject
是许多其他人的父类,包括Dog
和Ball
。我想创建一个方法,如果Within包含Ball
类型的任何对象,则返回true,但我不知道如何执行此操作。
我尝试过使用Count<>
,Any<>
,Find<>
以及C#中提供的其他一些方法,但我无法让它们发挥作用。
public bool DetectBall(List<GameObject> Within)
{
//if Within contains any object of type ball:
{
return true;
}
}
答案 0 :(得分:52)
if (within.OfType<Ball>().Any())
除了Cast<T>()
和OfType<T>()
之外的所有LINQ方法的泛型参数用于允许方法调用进行编译,并且必须与列表的类型兼容(或者用于协变强制转换)。它们不能用于按类型过滤。
答案 1 :(得分:9)
如果您有兴趣
,请参阅非linqpublic bool DetectBall(List<GameObject> Within)
{
foreach(GameObject go in Within)
{
if(go is Ball) return true;
}
return false;
}