2007-09-13

Use "??" for avoiding null

There is a nifty operator in dotnet2, ??

Use it to get the first thing that is not null.
   string name = firstName ?? lastName ?? email ?? "Has no name";
sets name to the first value that is not null.

To set  a string to empty if it is null but keep it otherwise:
    message = message ?? string.Empty;
which is  the same as
    if( null ==  message ){
        message = string.Empty;
    }


One might consider it harder to read but I think it is a matter of getting used to.

Beware though of its low precedence.
    string user = userName ?? string.Empty +  description;
will always return only the userName if there is one.   Alas, insert a pair of parenthesises: 
    string user = ( userName ?? string.Empty ) +  description;

On the side I prefer
    string.Empty
to
   ""
because with string.Empty I am totally sure the string is empty.  There is no chance what so ever that a stray space slipped in between the quotes.

No comments: