Click here to Skip to main content
15,867,308 members
Articles / Programming Languages / C#
Tip/Trick

IfNull Extension Method

Rate me:
Please Sign up or sign in to vote.
5.00/5 (1 vote)
3 Jul 2012CPOL1 min read 21.7K   2   12
An extension method that gives you a replacement if the Type is null.

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:

C#
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:

C#
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)


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

Comments and Discussions

 
GeneralWhy? Pin
springy765-Jul-12 1:04
springy765-Jul-12 1:04 
What is wrong with:
C#
Console.WriteLine (salutation ?? "Sir/Madam");
?
GeneralRe: Why? Pin
TheFoZ5-Jul-12 1:22
TheFoZ5-Jul-12 1:22 
GeneralAnother way Pin
gazmendmehmeti4-Jul-12 1:48
gazmendmehmeti4-Jul-12 1:48 
AnswerRe: Another way Pin
TheFoZ4-Jul-12 2:33
TheFoZ4-Jul-12 2:33 
GeneralRe: Another way Pin
springy765-Jul-12 1:07
springy765-Jul-12 1:07 
GeneralRe: Another way Pin
TheFoZ5-Jul-12 1:25
TheFoZ5-Jul-12 1:25 
SuggestionSeparate Extensions Pin
Matthew Searles3-Jul-12 20:12
Matthew Searles3-Jul-12 20:12 
GeneralRe: Separate Extensions Pin
TheFoZ3-Jul-12 21:57
TheFoZ3-Jul-12 21:57 
GeneralRe: Separate Extensions Pin
Paulo Zemek5-Jul-12 4:48
mvaPaulo Zemek5-Jul-12 4:48 
GeneralRe: Separate Extensions Pin
Matthew Searles5-Jul-12 16:45
Matthew Searles5-Jul-12 16:45 
GeneralRe: Separate Extensions Pin
TheFoZ5-Jul-12 21:12
TheFoZ5-Jul-12 21:12 
GeneralRe: Separate Extensions Pin
TheFoZ5-Jul-12 21:06
TheFoZ5-Jul-12 21:06 

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

Use Ctrl+Left/Right to switch messages, Ctrl+Up/Down to switch threads, Ctrl+Shift+Left/Right to switch pages.