title: switch with var/null strange behavior
body: <p>Given the following code:</p>
  
  <pre><code>string someString = null;
  switch (someString)
  {
      case string s:
          Console.WriteLine("string s");
          break;
      case var o:
          Console.WriteLine("var o");
          break;
      default:
          Console.WriteLine("default");
          break;
  }
  </code></pre>
  
  <p>Why is the switch statement matching on <code>case var o</code>?</p>
  
  <p>It is my understanding that <code>case string s</code> does not match when <code>s == null</code> because (effectively) <code>(null as string) != null</code> evaluates to false. IntelliSense on VS Code tells me that <code>o</code> is a <code>string</code> as well. Any thoughts?</p>
  
  <hr>
  
  <p>Similiar to: <a href="https://stackoverflow.com/questions/42950833/c-sharp-7-switch-case-with-null-checks">C# 7 switch case with null checks</a></p>