Different behavior in pattern matching when using var or explicit type : <p>Consider the following, at first glance absurd, pattern match:</p>

<pre><code>string s = null;
if (s is string ss) //false
if (s is string) //false
</code></pre>

<p>Both <code>is</code> will return <code>false</code>. However if we use <code>var</code> the behavior changes completely:</p>

<pre><code>string s = null;
if (s is var ss) //true!?!
</code></pre>

<p>If you hover over <code>var</code> in <em>VS2017</em>, the type is <code>string</code> but the behavior of <code>is</code> is completely different. The compiler is doing something radically different even though the inferred type is the same. How can this be? Is this a bug? Is the <code>null</code> type somehow bubbling out?</p>
