2013-02-20 60 views
1

如果我做Dim array As String()我似乎可以调整该数组的大小,并随时随地放入任何东西。例如:我的阵列在飞行中调整大小

Dim PackUrls As String() 
PackUrls = Split(WebRequest("http://" + sPackBaseURI, sPackBaseURIUsername, sPackBaseURIPassword), ":") 

而我没有得到一个错误,没有什么奇怪的数组发生。

我这样做没想到然后我读到,你必须先指定数组的大小!这是为什么发生?

回答

1

这就是在你的代码

'Create an empty string array called PackUrls 
Dim PackUrls As String() 

'Create a new string array from the Split function 
'and assign it to the variable PackUrls, replacing the old value. 
PackUrls = Split(WebRequest("http://" + sPackBaseURI, _ 
          sPackBaseURIUsername, sPackBaseURIPassword), ":") 

发生没有从SplitPackUrls结果复制。原始内容(顺便说一句,没有任何内容)被替换为Split中的新内容。因此不需要调整数组的大小。你可以很容易地重写你的代码,像这样,它会工作:

Dim PackUrls As String() = Split(WebRequest("http://" + sPackBaseURI, _ 
          sPackBaseURIUsername, sPackBaseURIPassword), ":") 
+0

谢谢,我明白了。 – RX14 2013-02-20 11:57:13

1

当您将var和array分配给var时,您将使用新数组替换它,而不管大小。 var现在指向一个相同类型的新数据,所以不需要任何错误。

当你将一个数组赋值给一个数组var时,你并不是单独拷贝这些项目,而是该变量正在向新数组移动。