Click here to Skip to main content
Click here to Skip to main content

IfNull Extension Method

By , 3 Jul 2012
 

Introduction

This tip explains how to implement and use a Generic IfNull Extension Method in your project.

Background

While working on my current C# project after completing an MS Access VBA project, I really missed the Nz function, so I set about creating one. I initially thought about using a static method but didn't like the idea of that as it wouldn't look nice in the code. I then read How does it work in C#? - Part 3 (C# LINQ in detail) by Mohammad A Rahman and it reminded me about Extension Methods so I gave it a go.

If you would like more extension methods there are some very useful ones in the article Extension Methods in .NET that I found to make sure I wasn't duplicating.

Using the code

In your project/solution, create a class and put in the following code:

using System.Text;
 
namespace MyExtensions
{
    public static class Extensions
    {           
       public static T IfNull<T>(this T source, T valueIfNull)
        {
            if (source is string)
            {
                string temp = source as string;
 
                if (!string.IsNullOrEmpty(temp))
                    return source;
                
                return valueIfNull;
            }
 
            if (source is StringBuilder)
            {
                StringBuilder temp = source as StringBuilder;
 
                if (temp == null)
                    return valueIfNull;
 
                if (temp.Length != 0)
                    return source;
 
                return valueIfNull;
            }
 
            if (source != null)
                return source;
 
            return valueIfNull;
        }
    }
}

With this extension method, you can add custom code to handle specific classes as I have done with the StringBuilder class. This example handles a zero length instance.

To use the extension method in your project, just reference the namespace and project/assembly and the method will be available to use like this:

string salutation = string.Empty;
 
Console.WriteLine (salutation.IfNull("Sir/Madam"));

Points of Interest

Changing the namespace of the class to System will allow you to use the extension throughout your project but I'm not sure if that is a good practice or not.

License

This article, along with any associated source code and files, is licensed under The Code Project Open License (CPOL)

About the Author

TheFoZ
Software Developer SSE
United Kingdom United Kingdom
Member
Been a professional programmer for 2 years working in C# and VBA working in the energy industry

Sign Up to vote   Poor Excellent
Add a reason or comment to your vote: x
Votes of 3 or less require a comment

Comments and Discussions

 
Hint: For improved responsiveness ensure Javascript is enabled and choose 'Normal' from the Layout dropdown and hit 'Update'.
You must Sign In to use this message board.
Search this forum  
    Spacing  Noise  Layout  Per page   
GeneralWhy?memberspringy765 Jul '12 - 1:04 
GeneralRe: Why?memberTheFoZ5 Jul '12 - 1:22 
GeneralAnother way [modified]membergazmendmehmeti4 Jul '12 - 1:48 
AnswerRe: Another waymemberTheFoZ4 Jul '12 - 2:33 
GeneralRe: Another waymemberspringy765 Jul '12 - 1:07 
GeneralRe: Another waymemberTheFoZ5 Jul '12 - 1:25 
SuggestionSeparate ExtensionsmemberMatthew Searles3 Jul '12 - 20:12 
GeneralRe: Separate ExtensionsmemberTheFoZ3 Jul '12 - 21:57 
GeneralRe: Separate ExtensionsmvpPaulo Zemek5 Jul '12 - 4:48 
GeneralRe: Separate ExtensionsmemberMatthew Searles5 Jul '12 - 16:45 
GeneralRe: Separate ExtensionsmemberTheFoZ5 Jul '12 - 21:12 
GeneralRe: Separate ExtensionsmemberTheFoZ5 Jul '12 - 21:06 

General General    News News    Suggestion Suggestion    Question Question    Bug Bug    Answer Answer    Joke Joke    Rant Rant    Admin Admin   

Permalink | Advertise | Privacy | Mobile
Web01 | 2.6.130523.1 | Last Updated 3 Jul 2012
Article Copyright 2012 by TheFoZ
Everything else Copyright © CodeProject, 1999-2013
Terms of Use
Layout: fixed | fluid