VB6和.net2012关于变体类型Variant差异。

在VB6中调用C++DLL:

Dim sndData‘缺省类型,自动默认为Variant/empty

sndData=data’data为一个二进制数组,赋值结束后sndData的类型自动变为Variant/byte(0 to 65)

Result=Msocket.sendto(sndData)'C++接收类型为Variant。

以上代码正常。

在在.net2012中同样情况:

Dim sndData As Object‘这里不支持缺省了。
sndData=VB6.copyArray(data)’这里升级也自动变了。不支持直等了。看sndData类型只显示Object,值跟VB6一样。

Result=Msocket.sendto(sndData)'_报错:类型不一致。_

请问:我该如何在.net2012中定义能够与VB6.0保持一致,让我能够传的参数能够让变体类型参数接收?
2012中的Object类型等同于VB6的缺省类型吗?

2个回答

object等同variant,但是内置的数组不兼容。

chen_zhi_heng
忧灵 Object根本不被默认为Variant
5 年多之前 回复
chen_zhi_heng
忧灵 测试发现跟数组没关系。在VB6中给缺省变量赋一个string类型,然后往dll里传,一样可以传进去,2012就不行。也就是说。2012
5 年多之前 回复
chen_zhi_heng
忧灵 你好,能详细说明一下吗?
5 年多之前 回复

C++那边的的实现代码(用于判断是传值还是传引用)以及VB.Net里面Msocket.sendto和VB6.copyArray两个方法的声明都没有,无法判断。

Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
立即提问
相关内容推荐