How to check for type in loop?

c#

Solution

EDIT: It's actually even easier using `Type.IsInstanceOfType` if you can't make it a generic method:

private bool CheckJumpObstacle(Type type)
{
    return GameItems.Any(x =>type.IsInstanceOfType(x));
}

It sounds like you probably want `Type.IsAssignableFrom`

if (go != null && type.IsAssignableFrom(go.GetType());

Note that this is assuming you want inherited types to match.

Also, if at all possible, use generics instead. Aside from anything else, that would make the method really simple:

private bool CheckJumpObstacle<T>()
{
    return GameItems.OfType<T>().Any();
}

Even without that, you can still use LINQ to make it easier:

private bool CheckJumpObstacle(Type type)
{
    return GameItems.Any(x => x != null && type.IsAssignableFrom(x.GetType()));
}

Obviously if you don't expect any null values, you can get rid of the nullity check.

Problem

I know how to check a type of a field directly. But how could I implement something like this ``` private bool checkJumpObstacle(Type type) { foreach (GameObject3D go in GameItems) { if (go is type) // won't accept 'type' { return true; } } return false; } ``` For type, I'd like to pass `Car`, `House` or `Human` as a parameter (those are all classes). But this kind of code doesn't work.

Original source