On Sun, 27 Sep 2009 01:29:55 +0400, Jeremie Pelletier <[email protected]>
wrote:
[...] I much prefer my programs to crash on using a null reference and
fix the issue than add runtime overhead that does the same thing.
What runtime overhead are you talking about here? Use of non-null pointers
actually make your program run faster, because you don't have to check
them against null all the time. Non-null references is a contract, which
is enforced by a compiler at compile-time, not runtime. It also makes your
program more consistent and less verbose.
Null references are useful to implement optional arguments without any
overhead by an Optional!T wrapper.
Once again, what overhead are you talking about? Optional!(T) (or
Nullable!(T)) doesn't have to have any additional bits to store the NULL
state for reference types.
If you disallow null references what would "Object foo;" initialize to
then?
Nothing. It's a compile-time error. But the following is not:
Object foo = initializer();
Nullable!(Object) foo2; // default-initialized to a null, same as currently
Object? foo3; // a desirable syntax sugar for Nullable!(Object)