在Visual Basic 6中,有没有办法判断传递给函数的变量是不是对象?
我想要测试变量是否为null、nothing或empty,但只有对象可以使用“Is Nothing”进行测试。
有什么想法吗?
这个函数是如何定义的?
如果它是... As Object
,那么它要么是一个有效的对象,要么是Null
。
如果它是... As Variant
(或没有类型),那么可以传递任何内容,并且你可以使用IsEmpty()
、IsNull()
(注意,不是一个空对象,而是一个空值)或IsObject()
来检查,具体取决于你在... Is Nothing
检查之前想要检查什么。
如果参数是Optional
,则可以使用IsMissing()
,但它必须是一个没有默认值的变量类型。
此外,请参阅这篇文章,了解VB中Null的各种用法。
IsObject(variable)
TypeOf
运算符。所有不是简单值(即Integer等)的东西都属于Object
类型。If TypeOf Variable Is Object Then
' ...
End If
TypeOf 还允许进行继承检查。例如,Outlook 文件夹中的邮件项既是类型为 Object
又是类型为 Outlook.MailItem
,因此您可以通过这种方式对通用 Variant 变量进行实际的类型安全检查。
请注意,If TypeOf ...
无法与简单值(即 Integer)作为类型的变量一起使用,只能与对象类型的变量(Variant、COM 对象、内置对象)一起使用。
对于可变参数,您还可以使用VarType()函数及其关联的Enum。
IsNull
代替。 - vcsjones