Login | Register   
LinkedIn
Google+
Twitter
RSS Feed
Download our iPhone app
TODAY'S HEADLINES  |   ARTICLE ARCHIVE  |   FORUMS  |   TIP BANK
Browse DevX
Sign up for e-mail newsletters from DevX


Tip of the Day
Language: VBNET
Expertise: Intermediate
Jan 19, 2002

Implementing IClonable - Shallow copies

An object that want to support cloning should implement the ICloneable interface. This interface exposes only one method, Clone, which returns a copy of the object. The ICloneable specifics don't specify whether the object that the Clone method returns is a shallow copy or a deep copy. The difference is subtle, but important when the object being cloned has subobjects: a shallow copy creates a clone of the main (root) object, but doesn't create a copy of any dependent object, whereas a deep copy would copy also all dependent objects.

For example, if you are cloning an array of ten Person objects, a shallow copy would create only one new object (the array), whereas a deep copy would create 11 new objects.

The simplest way to generate a shallow copy is to rely on the MemberwiseClone method that all objects inherit from System.Object. So in practice, you can use the same routine for all cloneable classes:


Class Person
    Implements ICloneable

    ' ...

    Function Clone() As Object Implements ICloneable.Clone
        Return Me.MemberwiseClone
    End Function
End Class
Francesco Balena
 
Comment and Contribute

 

 

 

 

 


(Maximum characters: 1200). You have 1200 characters left.

 

 

Sitemap