title: System.String underlying implementation
body: <p>I was recently trying to do the following in c#</p>
  
  <pre><code>string str = "u r awesome";
  str[0]="i";
  </code></pre>
  
  <p>And it wouldn't work because apparently str[i] is only a get not a set, so I was wondering what the underlying implementation of string is that would force str[i] to only be a get.</p>
  
  <p>Isn't it just a managed wrapper for a char *?  So then why can't I set str[i]?</p>