title: Clone object without changing the values of the original object C#
body: <p>I need to make a copy of a MyGame class and use it in my simulation for game trials before I select a move to play.</p>
  
  <p>For example :</p>
  
  <pre><code>public class MyGame
    {
       private int Start;
       private Board board;
  
       //Constructor 
  
       public void Play()
       {
           //play game 
       }
  
       public object Clone()
       {     
  
  
       }
  
    }
  
   public class Board
      {
          private int Count; 
  
          //Constructor
  
          //Some methods and properties
  
       public object Clone()
       {     
  
       }
  
      }
  </code></pre>
  
  <p>Writing code for the method Clone() I have tried </p>
  
  <ol>
  <li>MemberwiseClone()</li>
  <li>(Board) this.MemberwiseClone()</li>
  <li>Board b = (Board) this.Board</li>
  </ol>
  
  <p>I have read alot of articles and forums about this topic. The answer most people
  use is Deep cloning objects in C#, I tried samples with respect to my project but I still 
  get my simulation modifying the original object (MyGame Class) and not the copy.</p>