title: Why does .NET create new substrings instead of pointing into existing strings?
body: <p>From a brief look using Reflector, it looks like <code>String.Substring()</code> allocates memory for each substring. Am I correct that this is the case? I thought that wouldn't be necessary since strings are immutable.   </p>
  
  <p>My underlying goal was to create a <code>IEnumerable&lt;string&gt; Split(this String, Char)</code> extension method that allocates no additional memory. </p>