Extension methods are static methods which behave like instance methods. However, unlike what happens when calling an instance method on a null
reference, when an extension method is called with a null
reference, it does not throw a NullReferenceException
. This can be quite useful in some scenarios.
For example, consider the following static class:
public static class StringExtensions
{
public static string EmptyIfNull(this string text)
{
return text ?? String.Empty;
}
public static string NullIfEmpty(this string text)
{
return String.Empty == text ? null : text;
}
}
string nullString = null;
string emptyString = nullString.EmptyIfNull();// will return ""
string anotherNullString = emptyString.NullIfEmpty(); // will return null