Что такое VB-эквивалент Java instanceof и isInstance ()?

в духе c# вопрос..

каковы эквивалентные операторы для сравнения типов классов в VB.NET?

3 ответов


вы ищете что-то вроде TypeOf? Это работает только со ссылочными типами, а не int/etc.

If TypeOf "value" Is String Then
     Console.WriteLine("'tis a string, m'lord!")

или вы хотите сравнить два разных экземпляра переменных? Также работает для типов ref:

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, если у тебя его нет.


TypeOf obj Is MyClass

VB, эквивалентный вашему связанному вопросу, почти идентичен:

Dim result As Boolean = obj.GetType().IsAssignableFrom(otherObj.GetType())