title: Strange string literal comparison
body: <p>Going deeper in C#, I have encountered a little (strange) problem with object reference equality.
  Let says I have two strings:</p>
  
  <pre><code>String a = "Hello world!";
  String b = "Bonjour le monde";
  bool equals = ReferenceEquals(a, b);  // ******************* (1)
  b = "Hello world!";
  equals = ReferenceEquals(a, b);       // ******************* (2)
  </code></pre>
  
  <p><code>(1)</code> Is <code>false</code> and that is expected.
  ReferenceEquals <a href="http://msdn.microsoft.com/en-us/library/system.object.referenceequals.aspx" rel="noreferrer">Documentation</a> says</p>
  
  <blockquote>
    <p>ReferenceEquals compares instances</p>
  </blockquote>
  
  <p>but then: </p>
  
  <ul>
  <li>Why does (2) returns <code>true</code>?</li>
  <li>Strings <code>a</code> and <code>b</code> are not the same object are they? If yes then how did they become the same given that I never <strong>explicitly</strong> did <code>a=b</code></li>
  </ul>