.IsNullOrEmpty() for List and Dictionary

string.IsNullOrEmpty() in C# for strings is awesome.  I pass in a string, it tells me if it was null or blank.  Pre-trim it with something like this :

string.IsNullOrEmpty( ( var ?? "" ).Trim() )

and I know if I'm toast or not before the null reference exception or blank screen.

Well, what if I have a List<T>?  Or a Dictionary<T,U>?  Here's extension methods I wrote for checking blank-ness:

    public static bool IsNullOrEmpty<T>( this IList<T> List ) {
        return ( List == null || List.Count < 1 );
    }

    public static bool IsNullOrEmpty<T,U>( this IDictionary<T,U> Dictionary ) {
        return ( Dictionary == null || Dictionary.Count < 1 );
    }

The added benefit of this is I can say:

    myDict.IsNullOrEmpty()

which is usually more like the thought I had when I started writing the code.  So I also add this method:

    public static bool IsNullOrEmpty( this string String ) {
        return string.IsNullOrEmpty( ( String ?? "" ).Trim() );
    }

so I can call it like this:

    myString.IsNullOrEmpty()

but since I'm coalescing to empty string before trimming, I can just as easily say:

    public static bool IsNullOrEmpty( this string String ) {
        return ( (String ?? "").Trim() != "" );
    }

And for good measure, here's a similar JavaScript function I wrote to check for blank-ness:

    function isNullOrEmpty(val) {
        var empty = true,
            name = null;

        if ( typeof(val) === 'undefined' || val === null ) {
            return true; // It's null or undefined
        }
        if ( typeof(val) === 'string' ) {
            return (val === ''); // It's a string that may or may not be blank
        }
        if ( typeof(val) === 'object' ) {
            if (value.constructor === Array && val.length === 0) {
                return true; // It's an empty array
            }
            for ( name in val ) {
                if ( val.hasOwnProperty(name) ) {
                    empty = false;
                    break;
                }
            }
            return empty; // It's an object that has or doesn't have data in it
        }
        // It's not null or empty
        return false;
    }

And that, as we say, is null ... or empty.  :D

posted @ Tuesday, May 18, 2010 4:43 PM

Print

Comments on this entry:

# re: .IsNullOrEmpty() for List and Dictionary

Left by rob at 5/18/2010 4:44 PM
Gravatar
This is a test

Your comment:



 (will not be displayed)


 
 
 
Please add 1 and 8 and type the answer here:
 

Live Comment Preview: