3

[以下是在 VB6 中,我有一个集合数组,我想测试以确保某些内容属于集合类型]

我查看了几年前编写的一些代码,我正在执行以下操作以查看它是否是 Collection:

If TypeName(obj) = "Collection" Then ' Makes me feel uncomfortable.

但是,我不喜欢进行字符串比较的想法(根据 MSDN,会降低性能并且让我感到不舒服)并且更愿意做这样的事情:

If obj Is Collection Then

但是,这一行在 VB6 中会产生一个运行时错误,指出“编译器错误:变量未定义”。显然,因为“Is”运算符比较的是值而不是类型,所以这样做不会产生运行时错误,但无论如何都会返回 False(即使我之前 Set obj = New Collection):

Dim obj As Collection
Set obj = New Collection
If obj Is New Collection Then ' Returns False under every condition.

这是因为“新集合”将始终是一个新实例,因此是内存中的一个新位置(即使值相同)。

当然,我可以(并且确实)使用以下内容,但我追求的不仅仅是测试 Nothing 更具体:

If Not obj Is Nothing Then ' We can just assume it is a Collection Type.

但是,我正在寻找一种更好的方法来测试某物是否属于 Collection 类型,而不仅仅是假设它不是 Nothing。

感谢您的预期帮助。

4

1 回答 1

3

使用TypeOf. 例如:

If TypeOf obj Is Collection Then

TypeOf在 VB6 文档的“If ... Then ... Else”主题中进行了描述。感谢迪安娜指出这一点!

于 2012-09-04T07:31:05.833 回答