Na tohle se mnohem lépe než pole hodí System.Collections.Generic.List(Of String). List je přímo určený k tomu, aby se do něj snadněji přidávaly, z něj mazaly a v něm měnily položky. Sám v sobě také obsahuje pole, které ale zvětšuje podle potřeby, takže Vy nemusíte kolem toho pole nic řešit.
Dim slova = New List(Of String)
slova.Add("slovo 1 - index 0")
slova.Add("slovo 2 - index 1")
slova.Add("slovo 3 - index 2")
slova.RemoveAt(0) ' Smaže "slovo 1 - index 0", List se "posune"
' 0: slovo 2 - index 1
' 1: slovo 3 - index 2
slova(0) = "slovo" ' Změní "slovo 2 - index 1" na "slovo"
' 0: slovo
' 1: slovo 3 - index 2
slova.Remove("slovo 3 - index 2") ' Smaže "slovo 3 - index 2" (index 1)
' 0: slovo
slova.Insert(0, "slovo 0") ' Vloží "slovo", ale ne na konec (Add), ale na začátek - na index 0
' 0: slovo 0
' 1: slovo
Pokud jde o náhodný přístup k poli, nepoužívejte Rnd(), to je pozůstatek z VB 6. Místo toho použijte pseudonáhodný generátor z .NET frameworku:
Dim náhoda As New Random()
Dim náhodnýIndex = náhoda.Next(0, slova.Count)
' ^ Vrátí nějaký index z Listu slov
slova(náhodnýIndex) = "Změněno pseudonáhodou"
Deklaraci náhoda As New Random() dejte na úroveň třídy, ne do metody, protože kdybyste vytvářel stále nové generátory, budete dostávat stejná čísla, musíte mít jeden a na něm volat Next()
Public Class Form1
Dim slova As New List(Of STring)
Dim náhoda As New Random()
Public Sub ZměňNáhodně()
slova(náhoda.Next(0, slova.Count)) = "Změněno pseudonáhodou"
End Sub
End Class
|