I don't think it does. The subtitle of the paper is "The Existential Crisis of Null Pointers" because there seem to be two key requirements for a language to exhibit this problem:
Something that represents existential quantification strong enough that it can introduce new evidence. So for Java, the type Constrain<U,? super T> is essentially the type "there exists some type X that is a supertype of T and a subtype of U", which in turn implies T is a subtype of Uif it's inhabitable.
Implicit null pointers, meaning a null value that inhabits most types, or at least the ones used to form the existential quantification.
C# satisfies #2 but not #1. It doesn't really have any form existential quantification, and certainly not anything strong enough to introduce new evidence. Thus I don't think there's a way to use null to trick the type-checker into thinking two unrelated types are related.
For further actions, you may consider blocking this person and/or reporting abuse
We're a place where coders share, stay up-to-date and grow their careers.
I don't think it does. The subtitle of the paper is "The Existential Crisis of Null Pointers" because there seem to be two key requirements for a language to exhibit this problem:
Something that represents existential quantification strong enough that it can introduce new evidence. So for Java, the type
Constrain<U,? super T>
is essentially the type "there exists some typeX
that is a supertype ofT
and a subtype ofU
", which in turn impliesT
is a subtype ofU
if it's inhabitable.Implicit null pointers, meaning a
null
value that inhabits most types, or at least the ones used to form the existential quantification.C# satisfies #2 but not #1. It doesn't really have any form existential quantification, and certainly not anything strong enough to introduce new evidence. Thus I don't think there's a way to use
null
to trick the type-checker into thinking two unrelated types are related.