title: If strings are immutable in .NET, then why does Substring take O(n) time?
body: <p>Given that strings are immutable in .NET, I'm wondering why they have been designed such that <code>string.Substring()</code> takes O(<code>substring.Length</code>) time, instead of <code>O(1)</code>?</p>
  
  <p>i.e. what were the tradeoffs, if any?</p>