title: Why String is Value type although it is a class not a struct?
body: <p>Take the following example:</p>
  
  <pre><code>string me = "Ibraheem";
  string copy = me;
  me = "Empty";
  Console.WriteLine(me);
  Console.WriteLine(copy);
  </code></pre>
  
  <p>The output is:</p>
  
  <pre><code>Empty
  Ibraheem
  </code></pre>
  
  <p>Since it is class type (i.e. not a struct), String <code>copy</code> should also contain <code>Empty</code> because the <code>= operator</code> in C# assigns reference of objects rather than the object itself (as in C++)??</p>