arrays - 比较一个对象看它是否是一个集合而不使用 TypeName 并将其作为字符串进行比较?

标签 arrays object collections vb6 compare

[下面是在 VB6 中,我有一个集合数组,我想测试它以确保某些东西是类型集合]

我看过几年前写的一些代码,我正在执行以下操作以查看它是否是一个集合:

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

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

If obj Is Collection Then

但是,此行在 VB6 中产生运行时错误,指出“编译器错误:变量未定义”。显然,因为“Is”运算符比较的是值而不是类型,所以这样做不会产生运行时错误,但无论如何都会返回 False(即使我之前设置了 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.

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

感谢您期待的帮助。

最佳答案

使用 TypeOf。例如:

如果 TypeOf obj 是 Collection Then

TypeOf 在“If ... Then ... Else”中描述topic in the VB6 documentation . 感谢 Deanna 指出这一点!

关于arrays - 比较一个对象看它是否是一个集合而不使用 TypeName 并将其作为字符串进行比较?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12257154/

相关文章:

java - 如何从返回 double 组的方法中获取所有 double 值?

java - 为 PositionalList 添加方法

c++ - C++中的多维对象数组,我无法初始化它!

java - emptyList() 和 EMPTY_LIST android 之间的区别

javascript - a)函数或b)代码行的异步性是常数吗?

javascript - 如何使用正则表达式将字符串 "folder/lower-case-with-dash"转换为 "folderLowerCaseWithDash"(即驼峰格式)?

javascript - 在 JSON 中添加新元素

javascript - 无法访问 AngularJS 中 Javascript 函数返回的对象中的元素

java - 对象的迭代器[]

java - Scala - 链接两个隐式转换时如何进行模式匹配?