Bene, si possono usare le arraylist quando si devono ridimensionare arrays.
Infatti mi pare di ricordare che un array, quando viene ridimensionato, in realtà viene creato come nuovo array. Mi rifaccio il test che avevo ideato prima...
Sub Main() Dim MyArray As String() Dim SecondoArray As String() MyArray = {"uno", "due", "tre"} SecondoArray = MyArray Console.WriteLine(MyArray(0)) Console.WriteLine(SecondoArray Is MyArray) Console.ReadKey() ReDim Preserve MyArray(3) MyArray(3) = "quattro" Console.WriteLine(MyArray(3)) Console.WriteLine(SecondoArray Is MyArray) Console.ReadKey() End SubEcco l'output:
uno True quattro FalseQuesto significa che dopo il ReDim Preserve viene scritto nell'Heap un nuovo array con una locazione diversa.
Ci aggiungo dell'altro codice per vedere invece se la variabile SecondoArray resta sempre quella di prima.
Sub Main() Dim MyArray As String() Dim SecondoArray As String() MyArray = {"uno", "due", "tre"} SecondoArray = MyArray Console.WriteLine(MyArray(0)) Console.WriteLine("la proposizione secondo cui SecondoArray si identifica con MyArray è " & (SecondoArray Is MyArray)) Console.WriteLine("Lunghezza di MyArray " & MyArray.Length) Console.WriteLine("Lunghezza di SecondoArray " & SecondoArray.Length) Console.ReadKey() ReDim Preserve MyArray(3) MyArray(3) = "quattro" Console.WriteLine() Console.WriteLine(MyArray(3)) Console.WriteLine("la proposizione secondo cui SecondoArray si identifica con MyArray è " & (SecondoArray Is MyArray)) Console.WriteLine("Lunghezza di MyArray " & MyArray.Length) Console.WriteLine("Lunghezza di SecondoArray " & SecondoArray.Length) Console.ReadKey() End SubEcco, ci ho aggiunto del codice più "esplicativo", che "parla un po' più chiaro":
uno la proposizione secondo cui SecondoArray si identifica con MyArray è True Lunghezza di MyArray 3 Lunghezza di SecondoArray 3 quattro la proposizione secondo cui SecondoArray si identifica con MyArray è False Lunghezza di MyArray 4 Lunghezza di SecondoArray 3Dunque è chiaro che con il ReDim Preserve in realtà non si ridimensiona un bel niente, ma viene creato un nuovo array nello Heap, cui "punta" la variabile presente nello stack.
Nessun commento:
Posta un commento