Mi aiutate a capire perchè succede questo???
1) creo una matrice
2) La carico con tutti gli elementi pari a 5
3) Trasferisco alla Sub la matrice come parametro [passaggio(matrix)]
4) Il trasferimento avviene per valore [ByVal temp(,) As Single]
5) Nella Sub cambio tutti i valori a 20 alla matrice "temp"
Ora se vado a vedere gli elementi della matrice "matrix" (quella iniziale per intenderci) hanno tutti valore 20.
DOMANDA?
Perchè succede questo? Ho passato i valori come ByVal e quindi non dovevano modificarsi.
Rifacendo il tutto con un numero invece che con una matrice effettivamente il valore iniziale resta corretto.
Perchè questa differenza di comportamento???
Grazie in anticipo e ciao
codice:
'Nota: Servono 1 Button e 2 ListBox (se desiderate provarlo)
Dim matrix(2, 1) As Single 'Definisco la matrice
Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
matrix(0, 0) = 5
matrix(1, 0) = 5
matrix(2, 0) = 5
matrix(0, 1) = 5
matrix(1, 1) = 5
matrix(2, 1) = 5
'Visualizza i valori iniziali della matrice
For q As Integer = 0 To 2
ListBox1.Items.Add(matrix(q, 0) & vbTab & matrix(q, 1))
Next
'Chiamata al Sub
passaggio(matrix)
'Visualizza i valori della matrice DOPO L'ORDINAMENTO
For q As Integer = 0 To 2
ListBox2.Items.Add(matrix(q, 0) & vbTab & matrix(q, 1))
Next
End Sub
Sub passaggio(ByVal temp(,) As Single)
For k As Integer = 0 To 2
For m As Integer = 0 To 1
temp(k, m) = 20
Next
Next
End Sub