title: Why doesn't null evaluate to false?
body: <p>What is the reason <code>null</code> doesn't evaluate to <code>false</code> in conditionals?</p>
  
  <p>I first thought about assignments to avoid the bug of using <code>=</code> instead of <code>==</code>, but this could easily be disallowed by the compiler.</p>
  
  <pre><code>if (someClass = someValue) // cannot convert someClass to bool. Ok, nice
  
  if (someClass) // Cannot convert someClass to bool. Why?
  
  if (someClass != null) // More readable?
  </code></pre>
  
  <p>I think it's fairly reasonable to assume that <code>null</code> means <code>false</code>. There are other languages that use this too, and I've not had a bug because of it.</p>
  
  <p><strong>Edit:</strong> And I'm of course referring to reference types.</p>
  
  <p>A good comment by Daniel Earwicker on the assignment bug... This compiles without a warning because it evaluates to <code>bool</code>:</p>
  
  <pre><code>bool bool1 = false, bool2 = true;
  if (bool1 = bool2)
  {
      // oops... false == true, and bool1 became true...
  }
  </code></pre>