VB中有关数组(Array,Split)的问题

1、Array函数返回的是一个包含数组的变体变量2、Split函数返回的是一个从0开始的字符串数组上面的1、2是我在网上看到的解释,不知道对不对,基于上面的结论我有如下疑... 1、Array函数返回的是一个包含数组的变体变量
2、Split函数返回的是一个从0开始的字符串数组
上面的1、2是我在网上看到的解释,不知道对不对,基于上面的结论我有如下疑问
疑问:有一个带有参数的过程Subarr(x()),其中参数x()是一个数组
一、call subarr(array(1,2,3))或者 call subarr(split(“1,2,3”,“,”))均报错
二、定义一个变体变量arrx,对arrx赋值arrx=array(1,2,3)或者arrx=split(“1,2,3”,“,”)然后
call subarr(arrx)仍然报错
三、如果定义一个一维数组arry(1 to 3 ),并对数组进行赋值,那么call subarr(arry)则可以正常运行
四、如果把过程Subarr的参数从数组x(),变成变体变量x,即subarr(x),那么以上情况均能正常运行

结论:那么从我疑问中一、二、三、四中的现象来看,则可以断定array和split函数返回的应该都是包含数组的变体变量,而不是真正的数组。而且包含数组的变体变量和单纯的数组是有本质区别的,至少在参数传递时是不一样的。
请问大神,我的结论正确么??
那些浮于应用层面的童鞋绕道。
展开
 我来答
然后去远足
2013-08-15 · TA获得超过1万个赞
知道大有可为答主
回答量:4016
采纳率:83%
帮助的人:2360万
展开全部

哈哈,题主的研究很仔细,结论很正确。

 

可能很多人都被 Split() 的官方说明误导了,MSDN 里是这么解释的:

【返回一个下标从零开始的一维数组,它包含指定数目的子字符串。】(题主那个第二行“字符串数组”显然是不正确的描述)

 

于是乎很多人可能就以为既然这个一维数组包含的是“子字符串”,那么它的类型就应该是 String 喽?其实严格地讲,Split() 只能对 Variant 使用,默认输出是动态字符型。

 

所以,

Dim a() As String 
a = Split("1,2,3", ",")

从严格上讲是错误的,正确的应该是:

Dim a() As Variant 
a = Split("1,2,3", ",")

当然,Array() 和 Split() 还是有很多本质上的区别的。最直接的一点就是 Split() 的下标必须从 0 开始,而 Array() 就随意了。

更多追问追答
追问
你贴出来的2条代码均报错了哦
我上面实验的结论,split的返回值 前提是一个变体变量 然后其中才装有数组
你的代码一开始就用数组的方式定义,结果肯定报错哦
追答

题主说“浮于应用层面的童鞋绕道”把我镇住了,我可是调试通过的才敢发言的哟~实践出真知:

 

再放一张微软官方的说明文档截图:

推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式