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 ClassDove 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 Classottenendo 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