Neat way to handle Nullable types …

Posted on January 27, 2009

Ever since I read Rick Strahl’s blog post on the C# ?? operator, I’ve been in love with the C# ?? operator. Mostly I use it as a clean way to test a ViewState variable for null in a property. For example,

protected string stringToPersistOnPostBack { 
    get {
         return (ViewState[this.ClientID + "_stringToPersistOnPostBack"] ?? "").ToString();<
     }
}

Somewhere along the way, the real purpose of the ?? operator was forgotten though. It’s true purpose is to give a default value to a Nullable type thus allowing you to use it as the type.

I started with this code:

bool doExpand = (IsPostBack && e.Node.Expanded);

which gave me an error:

Operator && cannot be applied to types 'bool' and 'bool?'

While I often enjoy the use of Nullable types, they do introduce often annoying, sometimes unnecessary complexity to code. But thankfully, the nice folks at Microsoft came up with a rather nifty solution … the ?? operator.

At first, I thought I’d have to use the ?? operator to give e.Node.Expanded a default value of false AND cast the object to bool. Instead, all I had to do was this:

bool doExpand = (IsPostBack && (e.Node.Expanded ?? false));

See? Neat!


No Replies to "Neat way to handle Nullable types ..."


    Leave a Reply

    This site uses Akismet to reduce spam. Learn how your comment data is processed.