2011-11-18 100 views
4

在Visual Basic 6中,有无论如何告诉一个变量是否是一个对象? 我希望能够测试变量是否为null,什么也不是,但是只有对象可以使用“Is Nothing”来测试。 任何想法?VB6检查变量是否为对象

+2

您可以考虑使用'IsNull'。 – vcsjones

回答

6

函数是如何定义的?

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

如果是... As Variant(或无类型),那么什么都可以通过,你可以检查使用IsEmpty()IsNull()(注意,不是一个空对象,但空值)或IsObject()取决于你要检查之前到底是什么... Is Nothing检查。

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

另外,请查看this article关于VB中Null的各种用法。

+0

感谢您的全面回答,函数参数是一个无类型的变体,IsObject是我所需要的。 – Mike

4
IsObject(variable) 

不难发现

+0

我不知道我是怎么没有发现的,我接受deanna作为'更好'的答案,但upvoted你的答案以及。谢谢 – Mike

1

有一个TypeOf运营商在VB。所有不是简单的值(即Integer等)的类型都是Object

If TypeOf Variable Is Object Then 
    ' ... 
End If 

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

注意If TypeOf ...不起作用与被分类为简单的值(即整数)的变量,只有对象类型的变量(变体,COM对象,内置对象)。

+1

请注意类型/ UDT也不算作对象。 – Deanna

+0

@Deanna:谢谢你的提示。 – Tomalak

0

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