API?我不知道,没有试过。不过我想如果使用API可以的话,那么处理的原理应该是和用Byte和Variant去转换是一样的,说白了就是对象内存的copy,所以我觉得如果用variant和byte不行的话,API恐怕也不行;反之也一样,用API可以的话,用variant和byte也就可以了。
另外,可能还存在一种办法,先看一下以下的代码:
Public Function Add(Key As String, Optional sKey As String) As ActorInfo
Dim objNewMember As ActorInfo
Set objNewMember = New ActorInfo
objNewMember.Key = Key
If Len(sKey) = 0 Then
mCol.Add objNewMember
Else
mCol.Add objNewMember, sKey
End If
Set Add = objNewMember
Set objNewMember = Nothing
End Function
以上是我以前作的一个类中的一段,ActorInfo是另一个自定义的Class,这段代码也是属于标准的用VB作以Collection为基础的集合的标准代码的样子(有点饶舌啊)。我们看最后两句,
Set Add = objNewMember
Set objNewMember = Nothing
按理说我们将objNewMember赋值给Add,那么意味着Add和objNewMember应该是属于同一个东西,我们在后面一句中将objNewMember设置为nothing,Add也应该变为nothing才对,当时Add所返回的并不是nothing,而是在objNewMember被设置为nothing之前的值。这一点到底为什么,我一直没有搞懂。不过,也许可以由此引出来一种方法,就是利用类似的方式去创建一个集合,然后把要赋值的对象保存到这个集合当中。
抛砖引玉的工作我只能作到这了,剩下的大家讨论吧。