title: Deep cloning objects
body: <p>I want to do something like:</p>
  
  <pre><code>MyObject myObj = GetMyObj(); // Create and fill a new object
  MyObject newObj = myObj.Clone();
  </code></pre>
  
  <p>And then make changes to the new object that are not reflected in the original object.</p>
  
  <p>I don't often need this functionality, so when it's been necessary, I've resorted to creating a new object and then copying each property individually, but it always leaves me with the feeling that there is a better or more elegant way of handling the situation.</p>
  
  <p>How can I clone or deep copy an object so that the cloned object can be modified without any changes being reflected in the original object?</p>