Как я могу проверить, содержит ли List объект определенного типа?C # - PullRequest
15 голосов
/ 21 ноября 2011

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

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

Ответы [ 2 ]

53 голосов
/ 21 ноября 2011
if (within.OfType<Ball>().Any())

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

9 голосов
/ 21 ноября 2011

в non-linq, если вы заинтересованы

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

    return false;
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...