Вы ищете что-то вроде TypeOf
? Это работает только со ссылочными типами, но не с int / etc.
If TypeOf "value" Is String Then
Console.WriteLine("'tis a string, m'lord!")
Или вы хотите сравнить два разных экземпляра переменных? Также работает для типов ссылок:
Dim one As Object = "not an object"
Dim two As Object = "also not an object, exactly"
Dim three as Object = 3D
If one.GetType.Equals( two.GetType ) Then WL("They are the same, man")
If one.GetType Is two.GetType then WL("Also the same")
If one.GetType IsNot three.GetType Then WL("but these aren't")
Вы также можете использовать gettype()
, как, например, если вы не используете два объекта:
If three.GetType Is gettype(integer) then WL("is int")
Если вы хотите увидеть, является ли что-то подклассом другого типа (и входят в .net 3.5):
If three.GetType.IsSubclassOf(gettype(Object)) then WL("it is")
Но если вы хотите сделать это в более ранних версиях, вы должны перевернуть его (странно смотреть) и использовать:
If gettype(Object).IsAssignableFrom(three.GetType) Then WL("it is")
Все эти компиляции в SnippetCompiler , так что идите DL, если у вас его нет.