Pergunta

No espírito do c # questão ..

O que é as declarações equivalentes para comparar tipos de classes em VB.NET?

Foi útil?

Solução

Você está procurando algo como TypeOf? Isso só funciona com tipos de referência, não int / etc.

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

Ou você quer comparar duas instâncias diferentes de variáveis? Também funciona para tipos 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")

Você também pode usar gettype() como assim, se você não estiver usando dois objetos:

If three.GetType Is gettype(integer) then WL("is int")

Se você quiser ver se algo é uma subclasse de outro tipo (e estão em .NET 3.5):

If three.GetType.IsSubclassOf(gettype(Object)) then WL("it is")

Mas se você quiser fazer isso em versões anteriores, você tem que lançá-lo (estranho olhar para) e uso:

If gettype(Object).IsAssignableFrom(three.GetType) Then WL("it is")

Todos estes compilação em SnippetCompiler , então vá DL se você não tem -lo.

Outras dicas

TypeOf obj Is MyClass

O VB equivalente à sua pergunta ligada é quase idêntica:

Dim result As Boolean = obj.GetType().IsAssignableFrom(otherObj.GetType())
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top