title: C# pass by value/ref?
body: <p>Common question but I could use an "english" explanation. </p>
  
  <p>Is it like Java where</p>
  
  <pre><code>Cat myCat
  </code></pre>
  
  <p>actually is a pointer to <code>Cat</code>? </p>
  
  <p>Should I really create copy constructors in C#?</p>
  
  <hr>
  
  <p>I understand we are passing by value, but now my question is are we passing by pointer value or full copy of the object?</p>
  
  <p>If it's the latter, isn't that too expensive performance/memory wise? Is that when you have to use the ref keyword?</p>