COPIAR ARRAY - STRUCTURE
Olá a todos..
Nao consigo copiar um array como quero, em vb6 fazia-se só numa linha.. alguem sabe explicar o motivo?
segue o code:
Obrigado desde já,
té +
Nao consigo copiar um array como quero, em vb6 fazia-se só numa linha.. alguem sabe explicar o motivo?
segue o code:
Option Explicit On
Option Strict On
Public Class Form1
Private Structure Type_A
Dim nome() As String
End Structure
Private Structure Type_B
Dim j() As Type_A
End Structure
Dim a1() As Type_A
Dim a2 As Type_B
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
ReDim a1(0)
For i = 0 To UBound(a1)
ReDim a1(i).nome(0)
a1(i).nome(0) = [Ô]maria[Ô]
Next
ReDim a2.j(0)
For i = 0 To UBound(a2.j)
ReDim a2.j(i).nome(0)
a2.j(i).nome(0) = [Ô]Rita[Ô]
Next
Array.Copy(a1, a2.j, a1.Length) [ô] Não consigo copiar como quero com isto
[ô]a2.j = a1 [ô] Nem assim
[ô]For i = 0 To UBound(a1) [ô]Assim copia bem
[ô] For i2 = 0 To UBound(a1(i).nome)
[ô] a2.j(i).nome(i2) = a1(i).nome(i2)
[ô] Next [ô]i2
[ô]Next [ô]i
MsgBox(a2.j(0).nome(0)) [ô] Aqui tudo bem, foi copiado, dá-me as [Ô]maria[ô]s[Ô] que estavam no a1()
a1(0).nome(0) = [Ô]joana[Ô] [ô] Meto [Ô]joana[Ô] no a1()
MsgBox(a2.j(0).nome(0)) [ô] Não devia alterar para [Ô]joana[Ô] no a2()
End Sub
End Class
Obrigado desde já,
té +
Citação:If sourceArray and destinationArray are both reference-type arrays or are both arrays of type Object, a shallow copy is performed. A shallow copy of an Array is a new Array containing references to the same elements as the original Array. The elements themselves or anything referenced by the elements are not copied. In contrast, a deep copy of an Array copies the elements and everything directly or indirectly referenced by the elements.
http://msdn.microsoft.com/en-us/library/k4yx47a1.aspx
Usando Array.Copy, vc tem um shallow copy, ou seja, as referências são passadas pro outro array. Por isso quando vc muda em um, reflete no outro. Quando vc usou os dois loops, vc teve um deep copy.
http://en.wikipedia.org/wiki/Object_copy
Tópico encerrado , respostas não são mais permitidas