title: Why does intellicode '... is not null' when it is cleary null?
body: <p>Edit:</p>
  <p>Thanks to canton7 I will be looking into <a href="https://docs.microsoft.com/en-us/dotnet/csharp/nullable-references" rel="nofollow noreferrer">nullable reference types</a> as this is the C# 8 feature which is shown here.</p>
  <p>Edit2:</p>
  <p>TL;DR: The message &quot;'_products' is not null here.&quot; is <strong>purely</strong> based on the <strong>definition</strong> of the variable <em>_products</em>. If it's defined as a nullable-reference-type it sais &quot;maybe be null here&quot; if it's defined as NON-nullable-reference-type(=normal, basic def without the '?') it will say, what is shown on the picture below. Both cases are only hints/warnings and won't change the compiled code.</p>
  <h4>Original Question:</h4>
  <p>Calling method:</p>
  <pre><code>protected override async Task OnInitializedAsync() //ignore the Polymorphism
  {
      _products = await ProdService.GetProductListAsync();
      Console.WriteLine(&quot;_products: &quot; + _products + &quot; | is null?: &quot; + (_products == null));
  //output: &lt;&lt;_products:   is null? True&gt;&gt;
  }
  </code></pre>
  <p>Image:</p>
  <p><a href="https://i.stack.imgur.com/qhNHo.png" rel="nofollow noreferrer"><img src="https://i.stack.imgur.com/qhNHo.png" alt="enter image description here" /></a></p>
  <p>Called method:</p>
  <pre><code>public async Task&lt;List&lt;Product&gt;&gt; GetProductListAsync()
  {
      return null;
  }
  </code></pre>
  <p>Image:</p>
  <p><a href="https://i.stack.imgur.com/kDvkU.png" rel="nofollow noreferrer"><img src="https://i.stack.imgur.com/kDvkU.png" alt="enter image description here" /></a></p>