什么是Java的instanceof和isInstance()的VB等价物?

时间:2009-06-16 23:56:39

标签: java vb.net reflection introspection instanceof

本着c#问题的精神......

在VB.NET中比较类类型的等价语句是什么?

3 个答案:

答案 0 :(得分:15)

你在找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。

答案 1 :(得分:4)

TypeOf obj Is MyClass

答案 2 :(得分:0)

与你的链接问题相当的VB几乎完全相同:

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