實際上,只有第一個陣列已創建並可供使用。其他人只是聲明爲數組(或部分創建)。
Dim numbers(4) As Integer
Dim sales()() As Double = New Double(11)() {}
智能感知顯示,numbers
就可以使用了。對於鋸齒陣列sales
- 一個數組數組,代碼迄今只是告訴它它將容納多少個數組。每個那些是Nothing
因爲代碼還沒有創建或分配的一個到任何時隙:

行聲明sales
實際上做兩件事情,其可能會造成混淆。它可能是這樣聲明的:
' at some point I will want an array of array of doubles named sales:
Dim sales()() As Double
' Ok, I need it to hold 12 double arrays:
sales = New Double(11)() {}
第一步聲明變量和類型。第2步通過創建臨時數組並分配它來定義「容器數組」。 (該鏈接試圖用inquiriesByYearMonthDay
來說明 - 它在前面的塊中聲明)。
銷售仍然沒有準備好使用,它只是一堆Nothing
。
' Ok, I need the first array to hold 5 elements
sales(0) = New Double(4) {} ' 0 based, so 4 == 5 items
sales(0)(0) = 12.67 ' FINALLY we can use it
現在,sales(0)(0 thru 4)
可以存儲數據。 sales(1)()
,其餘的未被初始化。
New
並不直接作用於sales
。它正在創建一個新的臨時陣列(右側),該陣列立即分配給左側的sales()
插槽。
關鍵是:數組已準備好在給定大小時使用。因此,這些在功能上是相同的:
' create int array with 5 slots:
Dim numbers(4) As Integer
' declare array; assign empty 4 slot int array to it:
Dim numbers() As Int32 = New Int32(4) {}
第一個聲明包括大小;第二個分配一個指定大小的(新)臨時數組給它。這就是說,VB可以推斷出尺寸:
昏暗纔對作爲字符串()= { 「鱈魚」, 「鮭魚」, 「金槍魚」, 「導頻」, 「梭魚」}
的{...}
是另一溫度數組,VB分配給'魚'。
但是數組只是笨重。 sales(6,3)
代表什麼?爲了使它們可讀,你需要常量:foo = sales(SALES_MARCH, SALES_ZIGGY)
。就個人而言,我認爲唯一的好數組是一個靜態數組與已知的固定值:
Dim Days As String() = {"sun", "mon", "tues"....}
否則,List(Of T)
,Dictionary(TK, TV)
,Collection(Of T)
和許多其他許多人更容易使用,創建,管理和使用工作,(它們的大小他們自己!)
歡迎來到編程世界,其中(總是)多種方式來做事情。你選擇一個適合你的風格。 :) – Neolisk