Nullable or Optional? Or something else?
Steven Schveighoffer
schveiguy at yahoo.com
Thu Sep 3 09:44:54 PDT 2009
On Thu, 03 Sep 2009 11:50:55 -0400, Leandro Lucarella <llucax at gmail.com>
wrote:
> Steven Schveighoffer, el 3 de septiembre a las 11:22 me escribiste:
>> On Thu, 03 Sep 2009 10:40:13 -0400, Leandro Lucarella
>> >Maybe this is a very silly question, but what is exactly the difference
>> >between Optional!T o/isNull(o) and T* o/o is null?
>>
>> The difference is you don't have to store the T somewhere else.
>
> That doesn't seems like a big problem having a GC.
There are performance concerns, you need 16 bytes minimum to store a value
on the heap, so a 4-byte integer becomes 16 bytes on the heap. And the GC
is way slower than storing on the stack.
>
>> That is, an Optional!T contains both the value if it is not null AND
>> whether it is null or not. With a T*, the value is stored elsewhere,
>> and you may have aliasing problems.
>
> Ok, this seems like a reasonable point. So Optional!T is a value type,
> right?
If T is a value type, yes. I'm not sure what Andrei has in mind if T is a
reference type.
-Steve
More information about the Digitalmars-d
mailing list