On 17.11.2017 03:25, codephantom wrote:
On Friday, 17 November 2017 at 01:47:01 UTC, Michael V. Franklin wrote:

It peeked my interested, because when I first started studying D, the lack of any warning or error for this trivial case surprised me.

// Example A
class Test
{
    int Value;
}

void main(string[] args)
{
    Test t;
    t.Value++;  // No compiler error, or warning.  Runtime error!
}


Also, if you start with nothing, and add 1 to it, you still end up with nothing, cause you started with nothing. That makes completed sense to me. So why should that be invalid?


Because, for example, 'int' does not have a special null value, and we don't want it to have one.

The code starts with nothing, and tries to increment an 'int' Value that is associated to nothing. What is this value? There is no null in int. And anyway, the code does not say that t is nothing, it says that t is a Test. Then it does not say what kind of Test it is. The new features allow you to specify that t may be nothing, and they add a type int? that carries the cost of a special null value for those who are into that kind of thing.

Reply via email to