title: In C# what are our options to clone an object or copy its properties?
body: <blockquote>
    <p><strong>Possible Duplicate:</strong><br>
    <a href="https://stackoverflow.com/questions/78536/cloning-objects-in-c-sharp">Cloning objects in C#</a>  </p>
  </blockquote>
  
  
  
  <p><a href="https://stackoverflow.com/questions/2200409/what-is-the-difference-between-copying-and-cloning">So we have no standard definition</a> to differ <em>cloning</em> from <em>copying</em>, let's just assume here they're the same.</p>
  
  <p>Seems like it is <a href="https://stackoverflow.com/questions/8025890/is-there-a-much-better-way-to-create-deep-and-shallow-clones-in-c/8026574#8026574">very complicated</a> to clone objects in C#. At least in contrast with, let's say, <a href="https://stackoverflow.com/questions/122102/what-is-the-most-efficient-way-to-clone-a-javascript-object">javascript</a>. There are indeed <a href="https://stackoverflow.com/questions/78536/cloning-objects-in-c-sharp">many</a> different ways to <a href="https://stackoverflow.com/questions/930433/apply-properties-values-from-one-object-to-another-of-the-same-type-automaticall">do it</a>. And it's even <a href="http://www.agiledeveloper.com/articles/cloning072002.htm" rel="nofollow noreferrer">argued it makes no sense copying objects</a>.</p>
  
  <p>That said, what are all our built-in options to do it? For instance, is there any <a href="https://stackoverflow.com/questions/2585652/methods-for-deep-cloning-objects-in-c-sharp">non-serialized</a> option which we wouldn't need to worry about <a href="https://stackoverflow.com/questions/1308803/why-is-cloning-in-net-so-difficult">protection</a>?</p>
  
  <p>And what are the common ways around to do it? Do we have names for them, like we have for <a href="http://en.wikipedia.org/wiki/Sorting_algorithm#Summaries_of_popular_sorting_algorithms" rel="nofollow noreferrer">sorting</a>?</p>