title: Operator Overloading with C# Extension Methods
body: <p>I'm attempting to use extension methods to add an operater overload to the C# <code>StringBuilder</code> class.  Specifically, given <code>StringBuilder</code> <code>sb</code>, I'd like <code>sb += "text"</code> to become equivalent to <code>sb.Append("text")</code>.</p>
  
  <p>Here's the syntax for creating an extension method for <code>StringBuilder</code>:</p>
  
  <pre><code>public static class sbExtensions
  {
      public static StringBuilder blah(this StringBuilder sb)
      {
          return sb;
      }
  } 
  </code></pre>
  
  <p>It successfully adds the <code>blah</code> extension method to the <code>StringBuilder</code>.</p>
  
  <p>Unfortunately, operator overloading does not seem to work:</p>
  
  <pre><code>public static class sbExtensions
  {
      public static StringBuilder operator +(this StringBuilder sb, string s)
      {
          return sb.Append(s);
      }
  } 
  </code></pre>
  
  <p>Among other issues, the keyword <code>this</code> is not allowed in this context.</p>
  
  <p>Are adding operator overloads via extension methods possible?  If so, what's the proper way to go about it?</p>