On Monday, 20 November 2017 at 06:24:31 UTC, Tobias Müller wrote:
Timon Gehr <timon.g...@gmx.ch> wrote:
I wish there was a null for int types.

AFAIU, C# will now have 'int?'.

C# had 'int?' (nullable value types) for ages.
The new thing is explicitly nullable classes (reference types). I'm really
looking forward to use those.

int? is just syntactic sugar for Nullable<int>. It has been around since 2005. Nullable<T> is just a struct with an implementation similar to Nullable!T from D's std.typecons

This topic is about a new C# feature called "nullable reference types":

1. if you declare SomeClass x, x is assumed to *not hold null values*, that means that when you try "x = null" or x =" somepossiblenullvalue", this will result in a compiler warning: "Warning, x is supposed to hold a value" The warning can be avoided by using "x = null!" or "x = somepossiblenullvalue!"

2.if you declare SomeClass? x, x is allowed to *hold null values*, meaning that if you try "x.someFunction()", this will result in a compiler warning: "Warning, x can be null". The warning can be avoided in two ways:

2a. test for null: "if (x != null) { x.someFunction(); }"
2b. show the compiler that you know better:: x!.someFunction()


In fact, this is the introduction of a new operator "!", probably named "I know better" operator.

Reply via email to