title: Quick watch shows that object equal to empty string is not empty string
body: <p>Why the quick watch shows the statement p == "" as false, but we are going in the if statement.</p>
  
  <pre><code>    static void Main(string[] args)
      {
          string q = "";
  
          A(q);
      }
  
      static void A (object p)
      {
          if(p == null || p =="")
          {
              Console.WriteLine("Debugger shows false");
          }
      }
  </code></pre>
  
  <p>Is it a bug ?</p>
  
  <p>Note that according to <a href="https://stackoverflow.com/questions/21278322/compare-string-and-object-in-c-sharp">Compare string and object in c#</a> <code>p == ""</code> should still evaluate to <code>true</code> as <code>""</code> is an interned string - which indeed happens when code is executed, but fails in quick watch. </p>
  
  <p><a href="https://i.stack.imgur.com/s21vI.png" rel="nofollow noreferrer"><img src="https://i.stack.imgur.com/s21vI.png" alt="enter image description here"></a></p>