C# - Calling an extension methods on null references

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....

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值