Array - taulukot
Vb.net taulukot eroavat jonkin verran
VB6 taulukoista.
- Taulukon indeksi alkaa aina nollasta, OptionBase lausetta ei ole
- TO sana ei kelpaa
esittelyssä
- Ubound on nyt alkioiden määrä -1
- ReDim lause toimii toisin
- Lomakkeela olevat kontrollit (ohjaus objektit) eivät ole
enää ideksoituja
- Array luokka tuo runsaasti uusia
valmiita funktioita
Esittely
ja alustaminen
Taulukko voidaan esitellä monella
tapaa ja alaustaa esittelyn
yhteydessä.
Dim A(10) As Integer
Dim B(10, 12) As Byte
Dim C() As String ' koko määritellään myöhemmin
Dim D(,,,) As Short ' dimensioita neljä, koko myöhemmin
Dim F() As Long = {1, 2, 3, 4} 'esittely ja alustus yhdessä
Dim G(,) As Integer = {{1, 2, 3, 4}, {1, 2, 3, 4}} ' kaksi ulottuvuutta
Taulukon
koon muuttaminen
Taulukon ulottuvuuksien muuttaminen
(ReDim) tyhjää taulukon
ellei käytä Preserve sanaa.
ReDim voi muuttaa vain taulukon oikeanpuoleista
ulottuvuutta.
ReDim C(8) 'uusi dimensio
C(1) = "Koe"
ReDim C(9) 'tyhjäytyy samalla
C(1) = "Koe"
ReDim Preserve C(10) ' tieto säilyy
B(10, 12) = 64
ReDim Preserve B(10, 13) 'toimii
'ReDim Preserve B(11, 13) ' tämä väärin, vain oikeanpuoleinen ulottuvuus muutettavissa
Objekti
taulukot
Myös olioista eli objekteista
voidaan tehdä taulukoita:
Dim Nappi(2) As Button
Nappi(0) = New Button
Nappi(1) = New Button
Nappi(2) = New Button
Nappi(1).Text = "Nappi 1"
Taulukon
läpikäynti
Taulukon läpikäynti
voidaan tehdä For Each ...
Next luupilla tai perinteisellä For ... Next luupilla.
Dim merkkitaulukko(10) As Char
Dim merkki As Char : Dim ind As Integer
'sijoitetaan merkkitaulukkoon kirjain G joka elementtiin
For Each merkki In merkkitaulukko
merkki = "G"c
Next
' sama myös perinteisesti
For i = 0 To 10
merkkitaulukko(i) = "G"c
Next
Arvojen
sijoitus
Taulukon arvoja ei voi sijoittaa =
sijoituksella, koska se vain laittaa
kaksi nimeä osoittamaan samaa taulukkoa ja toiseen tehty muutos
näkyy myös toisessa. Oikea tapa on käyttää
CopyTo menetelmää, se on jopa nopeampi kuin elementti
kerrallaan tehty sijoitus.
Dim Z() As Integer = {1, 2, 3}
Dim X(2) As Integer
Dim Y(2) As Integer
' väärä tapa sijoittaa arvoja
X = Z ' X ja Z ovat sama asia
Z(2) = 6
Debug.Write(X(2)) '
' oikea tapa
Z.CopyTo(Y, 0)
Lisää Array asiaa
Array-luokka sivulla.
Sisältö - Array taulukot -
Array luokka