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

Rispondi quotando