As stated on the Microsoft's site, ICloneable interface can either deep or shallow copy:
An implementation of Clone can perform either a deep copy or a shallow copy. In a deep copy, all objects are duplicated; in a shallow copy, only the top-level objects are duplicated and the lower levels contain references.
To be honest, since there is not additional explanation on the topic, I don't understand how am I going to know when will shallow or deep copying occur?