2013-02-20 36 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時,你並不是單獨拷貝這些項目,而是該變量正在向新數組移動。