title: Different sorting results on different CLR versions
body: <p>While comparing strings in C#, different clr gives different results on Windows 7 sp1 x64. Here is sample code:</p>
  
  <pre><code>List&lt;string&gt; myList = new List&lt;string&gt;();
  myList.AddRange(new[] { "!-", "-!", "&amp;-l", "&amp;l-", "-(", "(-", "-*", "*-", ".-", "-.", "/'", "-/" });
  myList.Sort();
  Console.WriteLine(Environment.Version);
  myList.ForEach(Console.WriteLine);
  Console.WriteLine();
  Console.WriteLine(string.Compare("!-", "-!"));
  Console.WriteLine("!-".CompareTo("-!"));
  </code></pre>
  
  <p>Here is the sample output:</p>
  
  <hr>
  
  <p>If I set Target Framework to 4.0:</p>
  
  <pre><code>4.0.30319.18444
  !-
  -!
  &amp;l-
  &amp;-l
  (-
  -(
  *-
  -*
  .-
  -.
  /'
  -/
  
  -1
  -1
  </code></pre>
  
  <hr>
  
  <p>If I set Target Framework to 2.0:</p>
  
  <pre><code>2.0.50727.5485
  -!
  !-
  &amp;-l
  &amp;l-
  -(
  (-
  -*
  *-
  -.
  .-
  -/
  /'
  
  1
  1
  </code></pre>
  
  <p>Am I missing anything?</p>