JavascriptProva

venerdì 6 settembre 2013

Dichiarazione e definizione di una matrice, ripasso.

La dichiarazione di una matrice, con successiva definizione, sposta la matrice. Praticamente ne crea una nuova. La prova è in questo:
Public Class Form1
    Dim matrice() As Integer
    Dim copia() As Integer

    Private Sub Form1_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles MyBase.Load
        copia = matrice
        MsgBox(copia Is matrice)
        matrice = New Integer() {1, 2, 3}
        MsgBox(copia Is matrice)

    End Sub
End Class
Dove la seconda MsgBox restituisce False, mentre la prima restituisce True.
Nel creare spazio per la matrice, precedentemente solo dichiarata ma non definita, il programma sposta la matrice in un nuovo spazio, perchè la matrice-spia chiamata copia(), che ho identificato con la matrice, non risulta più identica ad essa.

Viceversa, se la dichiarazione si accompagna a una definizione, specificando anche il numero di elementi di una matrice, il cambiamento dei valori di questi elementi non sposta la matrice, che rimane identica alla sua matrice-spia copia().
Public Class Form1
    Dim matrice(3) As Integer
    Dim copia(3) As Integer

    Private Sub Form1_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles MyBase.Load
        copia = matrice
        MsgBox(copia Is matrice)
        matrice(0) = 1
        matrice(1) = 2
        matrice(2) = 3
        matrice(3) = 4
        MsgBox(copia Is matrice)
        MsgBox(matrice(3))
        MsgBox(copia(3))
    End Sub
End Class
ottenendo True, True, 4, 4. Il secondo True significa che la matrice è rimesta allocata nella stessa area di memoria in quanto le sue dimensioni non sono state toccate.

Nessun commento:

Posta un commento