Подтвердить что ты не робот

Как проверить, содержит ли List объект определенного типа? С#

У меня есть список (называемый Within) и содержит объекты типа GameObject. GameObject является родительским классом для многих других, включая Dog и Ball. Я хочу создать метод, который возвращает true, если внутри содержит любой объект типа Ball, но я не знаю, как это сделать.

Я пробовал использовать Count<>, Any<>, Find<> и несколько других методов, предоставляемых в С#, но я не мог заставить их работать.

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

Ответ 1

в не-linq, если вам интересно

public bool DetectBall(List<GameObject> Within)
{
    foreach(GameObject go in Within)
    {
        if(go is Ball) return true;
    }

    return false;
}

Ответ 2

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

Общий параметр всех методов LINQ, кроме Cast<T>() и OfType<T>(), используется для разрешения вызова метода и должен быть совместим с типом списка (или для ковариантного перевода). Они не могут использоваться для фильтрации по типу.