Pregunta

En el espíritu del c # pregunta ..

¿Cuáles son las declaraciones equivalentes para comparar los tipos de clase en VB.NET?

¿Fue útil?

Solución

¿Está buscando algo como TypeOf ? Esto solo funciona con tipos de referencia, no int / etc.

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

¿O desea comparar dos instancias diferentes de variables? También funciona para tipos de referencia:

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")

También podría usar gettype () de esta manera, si no está usando dos objetos:

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

Si desea ver si algo es una subclase de otro tipo (y está en .net 3.5):

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

Pero si quieres hacer eso en las versiones anteriores, debes voltearlo (raro de ver) y usar:

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

Todas estas compilaciones en SnippetCompiler , así que vaya a DL si no tiene it.

Otros consejos

TypeOf obj Is MyClass

El equivalente de VB a su pregunta vinculada es casi idéntico:

Dim result As Boolean = obj.GetType().IsAssignableFrom(otherObj.GetType())
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top