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())
It's quick, easy and you get access to all the articles on DevX.
This registration/login is to allow you to read articles on devx.com. Already a member?
To become a member of DevX.com create your Member Profile by completing the form below. Membership is free!
If you have a hot tip and we publish it, we'll pay you. However, due to accounting overhead we no longer pay $10 for a single tip submission. You must accumulate 10 acceptable tips to receive payment. Be sure to include a clear explanation of what the technique does and why it's useful. If it includes code, limit it to 20 lines if possible. Submit your tip here.