Что такое VB-эквивалент Java-экземпляра и isInstance ()? - PullRequest
9 голосов
/ 17 июня 2009

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

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

Ответы [ 3 ]

15 голосов
/ 17 июня 2009

Вы ищете что-то вроде 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, если у вас его нет.

4 голосов
/ 17 июня 2009
TypeOf obj Is MyClass
0 голосов
/ 17 июня 2009

VB эквивалент вашего связанного вопроса почти идентичен:

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