Ho un array intero dinamico a cui desidero aggiungere nuovi valori. Come posso farlo?Aggiungere un nuovo valore all'intero array (Visual Basic 2010)
Dim TeamIndex(), i As Integer
For i = 0 to 100
'TeamIndex(i).Add = <some value>
Next
Ho un array intero dinamico a cui desidero aggiungere nuovi valori. Come posso farlo?Aggiungere un nuovo valore all'intero array (Visual Basic 2010)
Dim TeamIndex(), i As Integer
For i = 0 to 100
'TeamIndex(i).Add = <some value>
Next
Utilizzare ReDim con Preserve per aumentare la dimensione della matrice mantenendo i vecchi valori.
ReDim in loop è consigliabile quando non si ha idea delle dimensioni e si è venuto a sapere per aumentare le dimensioni della matrice una alla volta.
Dim TeamIndex(), i As Integer
For i = 0 to 100
ReDim Preserve TeamIndex(i)
TeamIndex(i) = <some value>
Next
Se di dichiarare la dimensione della matrice in avanti nel codice colpo quindi utilizzare
ReDim TeamIndex(100)
Così il codice sarà:
Dim TeamIndex(), i As Integer
ReDim TeamIndex(100)
For i = 0 to 100
TeamIndex(i) = <some value>
Next
È possibile utilizzare l'ArrayList/Lista (Di T) per utilizzare Aggiungi/Rimuovi i valori in modo più dinamico.
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
Non c'è nulla in risposta di Romil che ritengo di essere sbagliato, ma vorrei andare oltre. ReDim Preserve
è un comando molto utile ma è importante rendersi conto che è un comando costoso e usarlo saggiamente.
considerare:
Dim TeamIndex(), i As Integer
For i = 0 to 100
ReDim Preserve TeamIndex(i)
TeamIndex(i) = <some value>
Next
Per ogni ciclo, tranne i = 0, il Common Language Runtime (CLR), deve:
ArrayList
è fantastico se avete bisogno di aggiungere o rimuovere elementi dalla metà della matrice, ma si sta pagando per tale funzionalità, anche se non ne hai bisogno. Se, ad esempio, stai leggendo i valori da un file e li memorizzi in modo sequenziale ma non sai in anticipo quanti valori ci saranno, lo ArrayList
comporta un sovraccarico che puoi evitare.
Io uso sempre ReDim
così:
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
Sopra ho usato 100 e 1000. I valori io scelgo dipendono mia valutazione del requisito probabile.
Nessuna necessità di ReDim e Mantieni. Basta inizializzare la matrice con la dimensione 100 [supponendo che la dimensione sia 100] – Writwick
'Per i = 0 su SomeNo'. Quindi se l'array sarà inizializzato 'As New Integer (SomeNo)', 'ReDim' e' Preserve' non saranno necessari in questo caso [Esempio di asker] come 'SomeNo' è costante. Di conseguenza, se 'SomeNo' è anche variabile e costantemente modificato, allora' ReDim' e 'Preserve' saranno necessari! – Writwick
+1 ma List (Of T) deve essere preferito su ArrayList per il nuovo codice – MarkJ