Вопрос

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

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

Это было полезно?

Решение

Вы ищете что-то вроде 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 он.

Другие советы

TypeOf obj Is MyClass

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

Dim result As Boolean = obj.GetType().IsAssignableFrom(otherObj.GetType())
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top