VB6如何检查变量是否为对象

4
在Visual Basic 6中,有没有办法判断传递给函数的变量是不是对象? 我想要测试变量是否为null、nothing或empty,但只有对象可以使用“Is Nothing”进行测试。 有什么想法吗?

2
你可以考虑使用 IsNull 代替。 - vcsjones
4个回答

6

这个函数是如何定义的?

如果它是... As Object,那么它要么是一个有效的对象,要么是Null

如果它是... As Variant(或没有类型),那么可以传递任何内容,并且你可以使用IsEmpty()IsNull()(注意,不是一个空对象,而是一个空值)或IsObject()来检查,具体取决于你在... Is Nothing检查之前想要检查什么。

如果参数是Optional,则可以使用IsMissing(),但它必须是一个没有默认值的变量类型。

此外,请参阅这篇文章,了解VB中Null的各种用法。


感谢您提供如此全面的答案,函数参数是未经过类型定义的变量,我需要使用 IsObject 进行判断。 - Mike

4
IsObject(variable)

很容易发现

我不知道为什么我没有找到那个答案,我接受了Deanna的答案作为“更好”的答案,但我也给了你的答案点赞。谢谢。 - Mike

1
在VB中有一个TypeOf运算符。所有不是简单值(即Integer等)的东西都属于Object类型。
If TypeOf Variable Is Object Then
  ' ...
End If

TypeOf 还允许进行继承检查。例如,Outlook 文件夹中的邮件项既是类型为 Object 又是类型为 Outlook.MailItem,因此您可以通过这种方式对通用 Variant 变量进行实际的类型安全检查。

请注意,If TypeOf ... 无法与简单值(即 Integer)作为类型的变量一起使用,只能与对象类型的变量(Variant、COM 对象、内置对象)一起使用。


1
请注意,类型/用户定义类型也不算对象。 - Deanna

0

对于可变参数,您还可以使用VarType()函数及其关联的Enum。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接