On 8/21/15 7:34 AM, "Marc =?UTF-8?B?U2Now7x0eiI=?= <[email protected]>" wrote:
On Thursday, 20 August 2015 at 19:41:44 UTC, Jonathan M Davis wrote:
On Thursday, 20 August 2015 at 17:50:11 UTC, Steven Schveighoffer wrote:
if(arr != null)

Definitely don't do that. IMHO, "== null and "!= null" should be
illegal. If you really want to check for null, then you need to use
"is null" or "!is null", whereas if you want to check that an array is
empty, check its length or call empty. By using "== null" or "!=
null", you tend to give the false impression that you're checking
whether the object or array is null - which is not what you're
actually doing.

I disagree. `is null` is the one that should be illegal. `is` is
supposed to do a bitwise comparison, but `null` is usually just a
pointer/reference, while a slice consists of both a reference and a
length. Which of those are compared?

Both. null in this context is actually an array (with null pointer and zero length).

null is technically a no-type placeholder (defaulting to void * without context). In different contexts it means different things.

arr is null -> both pointer and length are 0
arr == null -> arr contains the same elements that null contains.
arr.ptr == null -> arr contains a null pointer (length could technically be non-zero).

-Steve

Reply via email to