哈哈,题主的研究很仔细,结论很正确。
可能很多人都被 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() 就随意了。