Search notes:

System.IClonable (interface)

The System.IClonable interface defines one method only which creates a new object that is the copy of the object that Clone() was called on.
The returned type must be the same type or compatible with the type of the object that Clone() was called on.
public object Clone();
The implementor of Clone() is free to perform a shallow copy or a deep copy. Therfore, Microsoft recommends that IClonable not be used in public APIs.

See also

Object.MemberwiseClone() creates a shallow copy of an object.

Index