C# - Calling an extension methods on null references

1923 단어 C#
As many of you already know, extension methods gives you the ability to write code in such a way that you can call a.ExtensionMethods() while ExtensionMethods is with such signature
 
public static ExtensionClass 
{
  public static return_type ExtensionMethod(this class_type a);
}
 
 
and we all know if we know if instance "a"is null, the call to ExtensionMethods would fail with NRE (NullReferenceException) if the ExtensionMethods is a member method. but will that fail on ExtensionMethod?
 
Let's make some extension methods 
  public static class ExtensionMethodsOnNullReferences
  {
    public static bool IsNull(this object x)
    {
      return x == null;
    }

    public static bool IsNullOrEmpty(this string text)
    {
      return string.IsNullOrEmpty(text);
    }

  }

 
Which basically check if the extended object is null or Empty String (in the case of IsNullOrEmptyeString).
 
 
Here is the test code
 

    public static void DemoExtensionMethodsOnNullReferences()
    {
      object nullObj = null;
      string nullString = null;

      Console.WriteLine("{0} (expected True) == nullObj.IsNull()", nullObj.IsNull());
      Console.WriteLine("{0} (expected True) == nullString.IsNullOrEmpty()", nullString.IsNullOrEmpty());
    }

 
As you can see, it does not throw the NRE exception, but rather peacefully exected the code. 
 
Design Guide. With the speciality when dealing with Null Reference regardin extension method, It is recommended to check for nullity (with the help of ExtensionMethod) and throw ArgumentNullException rather than NullReferenceException....

좋은 웹페이지 즐겨찾기