Я хочу сделать что-то вроде следующего в C#:Как проверить, является ли переменная переменной типа в C#?
public bool ValidType(Type type)
{
return _someVar is type;
}
C#, кажется, не поддерживает этот синтаксис, хотя; элемент справа от «is», по-видимому, должен быть абсолютным типом, а не ссылкой на тип.
Я обнаружил, что следующий код, кажется, работает:
return _someVar.GetType().IsInstanceOfType(type) ||
_someVar.GetType().IsSubclassOf(type) ||
_SomeVar.GetType().IsAssignableFrom(type);
Я не понимаю, что IsAssignableFrom
делает, кроме того, что, кажется, нужно в некоторых сравнений типа как IsInstanceOfType
и IsSubclassOf
, кажется, не совпадают все случаи должным образом.
Действительно ли это лучший способ проверить переменную типа, называемого другой переменной, или есть более простой синтаксис, который я пропустил?
всегда есть оператор 'typeof', а ключевое слово' as' –
Спасибо за редактирование Тим :) –
@ Dan-o, «as» имеет ту же проблему, что и «есть», поскольку он может использоваться только с именами типов. typeof() не покажет, является ли _someVar экземпляром типа производного типа. –