<i>&gt;For example, to say that any class implements an interface is now nonsense - as long as nullable values are assignable to that type</i><p>You&#x27;re talking about a different concept of &quot;null&quot; from the parent you&#x27;re replying to (junto).<p>You&#x27;re talking about &quot;null&quot; as <i>invalid object reference</i> (similar to uninitialized pointer in C&#x2F;C++).<p>junto was asking about &quot;null&quot; as a sentinel value for semantics of &quot;missing&quot; or &quot;unknown&quot; data.  <i>This is a very desirable language feature to have.</i>  Your complaint about &quot;null references&quot; is valid but it&#x27;s further confusing the misunderstanding junto appears to have about Nullable&lt;T&gt;.<p>Nullable&lt;T&gt; isn&#x27;t about invalid object references.  Instead, it&#x27;s a convenient language feature that <i>combines two booleans</i> to expose the desirable semantics of a tri-state boolean.  The 1st bool is the user named variable.  The 2nd bool is the .HasValue property.  Instead of explicitly setting .Hashvalue=false, C# just lets programmer use &quot;null&quot;.