Hacker News new | ask | show | jobs
by seabrookmx 1012 days ago
C# calls the first one "nullable reference types." When that build option is enabled, all types are non-nullable by default, and you can make them optionally nullable by declaring them like "MyClass? cls = null;"

The compiler will ensure you check for null before de-referencing a nullable type.

1 comments

How does this interact with third-party dependencies you use? In my experience, most gradual typing things break down at that boundary.
This isn't gradual typing? If libraries are not compiled with the compiler option, then all their reference types will be deemed nullable and I need to check for null before dereferencing. I can't do something like "GetItem().Name" if "GetItem()" returns a reference type like I could in Java, GoLang, JS, etc. If that library did use the flag and was provably non-nullable, then I could.