我有一個動態整數數組,我希望添加新值。我該怎麼做?將新值添加到整數數組(Visual Basic 2010)
Dim TeamIndex(), i As Integer
For i = 0 to 100
'TeamIndex(i).Add = <some value>
Next
我有一個動態整數數組,我希望添加新值。我該怎麼做?將新值添加到整數數組(Visual Basic 2010)
Dim TeamIndex(), i As Integer
For i = 0 to 100
'TeamIndex(i).Add = <some value>
Next
使用ReDim with Preserve可以在保留舊值的情況下增加數組的大小。
如果您不知道大小,並逐漸知道增加數組大小,則建議您使用ReDim循環。
Dim TeamIndex(), i As Integer
For i = 0 to 100
ReDim Preserve TeamIndex(i)
TeamIndex(i) = <some value>
Next
如果你在拍攝代碼在稍後的聲明數組的大小,然後使用
ReDim TeamIndex(100)
因此,代碼將是:
Dim TeamIndex(), i As Integer
ReDim TeamIndex(100)
For i = 0 to 100
TeamIndex(i) = <some value>
Next
您可以使用ArrayList中/名單(Of T)使用更動態添加/刪除值。
Sub Main()
' Create an ArrayList and add three strings to it.
Dim list As New ArrayList
list.Add("Dot")
list.Add("Net")
list.Add("Perls")
' Remove a string.
list.RemoveAt(1)
' Insert a string.
list.Insert(0, "Carrot")
' Remove a range.
list.RemoveRange(0, 2)
' Display.
Dim str As String
For Each str In list
Console.WriteLine(str)
Next
End Sub
中沒有任何Romil的答案,我認爲是錯誤的,但我會走的更遠。 ReDim Preserve
是一個非常有用的命令,但認識到這是一個昂貴的命令並明智地使用它是很重要的。
考慮:
Dim TeamIndex(), i As Integer
For i = 0 to 100
ReDim Preserve TeamIndex(i)
TeamIndex(i) = <some value>
Next
對於每一個循環中,除了I = 0時,公共語言運行時(CLR)必須:
ArrayList
如果您需要添加或刪除陣列中間的元素,但即使您不需要該功能,您仍然支付該功能,那就太棒了。例如,如果您正在讀取文件中的值並按順序存儲它們,但事先並不知道有多少值,那麼ArrayList
會帶來大量可以避免的開銷。
我總是用ReDim
這樣的:
Dim MyArray() As XXX
Dim InxMACrntMax As Integer
ReDim MyArray(1000)
InxMACrntMax=-1
Do While more data to add to MyArray
InxMACrntMax = InxMACrntMax + 1
If InxMACrntMax > UBound(MyArray) Then
ReDim Preserve MyArray(UBound(MyArray)+100)
End If
MyArray(InxMACrntMax) = NewValue
Loop
ReDim MyArray(InxMACrntMax) ' Discard excess elements
上面我已經在我的要求很可能評估中使用100和1000我挑中的值取決於。
無需ReDim和Preserve。只要初始化大小爲100的數組[假設大小爲100] – Writwick
'對於i = 0到SomeNo'。因此,如果數組將被初始化在這種情況下[由於新的整數(SomeNo)','ReDim'和'Preserve'將不需要[由asker舉例],因爲'SomeNo'是不變的。因此,如果'SomeNo'也是可變的並且不斷變化,那麼'ReDim'和'Preserve'將是必要的! – Writwick
+1,但List(Of T)應優於ArrayList的新代碼 – MarkJ