title: What does null! statement mean?
body: <p>I've recently seen the following code:</p>
  <pre><code>public class Person
  {
      //line 1
      public string FirstName { get; }
  
      //line 2
      public string LastName { get; } = null!;
  
      //assign null is possible
      public string? MiddleName { get; } = null;
  
      public Person(string firstName, string lastName, string middleName)
      {
          FirstName = firstName;
          LastName = lastName;
          MiddleName = middleName;
      }
  
      public Person(string firstName, string lastName)
      {
          FirstName = firstName;
          LastName = lastName;
          MiddleName = null;
      }
  }
  </code></pre>
  <p>Basically, I try to dig into new c# 8 features. One of them is <code>NullableReferenceTypes</code>. <br />
  Actually, there're a lot of articles and information about it already. E.g. <a href="https://praeclarum.org/2018/12/17/nullable-reference-types.html" rel="noreferrer">this article</a> is quite good. <br/>
  But I didn't find any information about this new statement <code>null!</code> <br/>
  Can someone provide me an explanation for it? <br/>
  Why do I need to use this? <br/>
  And what is the difference between <code>line1</code> and <code>line2</code>?</p>