title: It is possible to overload `??` operator in C#?
body: <p>I read this <a href="http://msdn.microsoft.com/en-us/library/aa288467%28v=vs.71%29.aspx" rel="nofollow">MSDN document</a> regarding the operator overloading.</p>
  
  <p>In that example, the operators used were <code>+</code>, <code>-</code> and also can define others <code>*</code> or <code>/</code>.</p>
  
  <p>I want to overload <code>??</code> operator to be used for strings like</p>
  
  <pre><code>string emptyString = emptyString ?? "OtherValue";
  </code></pre>
  
  <p>instead of </p>
  
  <pre><code>string emptyString = string.IsNullOrEmpty(emptyString) ? "OtherValue" : emptyString;
  </code></pre>
  
  <p>I <strong>don't</strong> want to convert string to object and compare using <code>??</code>.</p>
  
  <p>I know that <code>??</code> is used for nullable value types, what MSDN says:</p>
  
  <blockquote>
    <p>The ?? operator is called the null-coalescing operator and is used to define a default value for nullable value types or reference types. </p>
    
    <p>It returns the left-hand operand if the operand is not null; otherwise it returns the right operand.</p>
  </blockquote>
  
  <p>I want to ask you <strong>if is possible</strong> to overload this operator in C#. The above example is a simple situation when need to use <code>??</code>.</p>