The simplest way to create a generic deep copy routine, that is a procedure that can create a true, distinct copy of an object and all its dependent object, is to rely on the serialization features of the .NET framework.
Function CloneObject(ByVal obj As Object) As Object ' Create a memory stream and a formatter. Dim ms As New MemoryStream(1000) Dim bf As New BinaryFormatter() ' Serialize the object into the stream. bf.Serialize(ms, obj) ' Position streem pointer back to first byte. ms.Seek(0, SeekOrigin.Begin) ' Deserialize into another object. CloneObject = bf.Deserialize(ms) ' Release memory. ms.Close()End Function
You can use this routine as follows:
Dim ar(100) As Person' Fill the array.' ...' Create a copy of the array AND all the objects it contains.ar = CType(CloneObject(ar), Person())