On Saturday, 1 November 2025 at 12:23:07 UTC, Brother Bill wrote:
What does dict == null mean vs dict is null, when dict is a
dictionary?
Is this table accurate?
```
dict == null dict is null # elements memory allocated
true true 0 no
true false 0 yes
false false 1+ yes
false true (Is this a possibility, and if
so, how to create it?)
```
The last one isn't possible.
To explain, an Associative Array is a struct that is a single
pointer to the actual implementation. The implementation is an
internal structure that stores all the data about the aa.
When the aa is null, this means it is a null pointer. This is
treated equivalently to an allocated aa that is empty.
Similar to arrays, `==` means, compare the *contents* of the aa.
This means that even if the buckets are not in the same order
(due to insertions, collisions, etc), you will get a comparison
of the keys and values, independent of ordering.
This also means that if you use `== null`, it will compare as
equal if the aa is empty, regardless of whether it is allocated
or not.
Whereas, `is` means, "is this the exact same instance". I.e. is
this the same pointer.
Note: you can allocate an empty AA by using the `new int[string]`
syntax.
-Steve