Be careful with Clone(): always read the MSDN documentation for the specific class you're working with - clone can be implemented as shallow copy for some types (for example, calling Clone() on arrays types creates a shallow copy).