`

C# - Calling an extension methods on null references

    博客分类:
  • C#
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....

分享到:
评论

相关推荐

    Python库 | joint-calling-0.1.88.tar.gz

    标题中的"Python库 | joint-calling-0.1.88.tar.gz"表明这是一个与Python相关的库,且版本号为0.1.88,它被打包成一个tar.gz文件。这种格式通常用于在Unix/Linux环境中分发软件,因为它可以进行文件压缩并合并多个...

    PyPI 官网下载 | joint-calling-0.1.51.tar.gz

    标题中的"PyPI 官网下载 | joint-calling-0.1.51.tar.gz"表明这是一个在Python Package Index(PyPI)上发布的软件包,名为`joint-calling`,版本为0.1.51,其打包形式是tar.gz。PyPI是Python开发者发布自己软件包的...

    Glaive-Function-Calling-V2函数调用数据集

    Glaive-Function-Calling-V2函数调用数据集

    acs-voice-calling-quickstart-源码.rar

    【标题解析】:“acs-voice-calling-quickstart-源码.rar”这个标题表明这是一个关于“ACS语音通话快速启动”的源代码压缩包。ACS(Azure Communication Services)是微软提供的一个通信平台服务,允许开发者轻松...

    app-app-calling-android-master源码

    【app-app-calling-android-master源码】是一个针对Android平台的应用程序源码库,它提供了实现应用程序间通信(App-to-App Calling)的功能。这个源码项目对于开发者来说是一份宝贵的资源,可以帮助他们深入理解...

    app-app-calling-android, 使用本教程构建应用Android调用应用程序的应用程序.zip

    app-app-calling-android, 使用本教程构建应用Android调用应用程序的应用程序 #Build 一个简单的Android VoIP呼叫应用程序,带有 Sinch本教程将指导你构建一个简单的Android VoIP呼叫应用程序。 完成后,它将显示...

    method-calling.rar_in

    这个名为"method-calling.rar_in"的压缩包文件包含了一个关于Java方法调用的30个示例,旨在帮助学习者深入理解和掌握这一关键概念。以下是关于Java方法调用的一些详细知识点: 1. **方法定义**:在Java中,方法是一...

    DEN0028E-SMC-Calling-Convention-1.4eac0

    ARM DEN 0028E - SMC Calling Convention ARM DEN 0028E 是 Arm Limited 公司发布的一份关于 SMC 调用约定的文档,本文主要介绍了 SMC 和 HVC 调用约定的详细信息,包括 Secure Monitor Calls、Hypervisor Calls、...

    Python库 | joint-calling-0.1.18.tar.gz

    资源分类:Python库 所属语言:Python 资源全名:joint-calling-0.1.18.tar.gz 资源来源:官方 安装方法:https://lanzao.blog.csdn.net/article/details/101784059

    JAVA-NATIVE-INTERFACE-CALLING-CPP-LIBRARY.zip_5 to 1

    1.WRITE JAVA CODE 2.COMPILE THE JAVA CODE 3.CREATE C/C++ HEADER 4.WRITE THE C/C++ CODE 5.RUN THE JAVA CODE (IF USING VISUAL STUDIO 2010 DONT HAVE TO CREATE SHARED LIB FILE, IT WILL DO IT FOR U)

    An introduction to TMO and Sprint Wi-Fi calling-v1.0-demo

    Wi-Fi通话技术是一种让移动设备在Wi-Fi网络覆盖范围内进行语音通话、视频通话以及发送短信的服务。本介绍主要聚焦于T-Mobile(TMO)和Sprint两家运营商的Wi-Fi通话实现,涵盖了用户体验、终端实现、IMS网络支持、SIP...

    C#-Windows-API.ppt

    在 C# 中使用 Windows API 库需要使用DllImportAttribute 特性来引入 API 函数,例如: [DllImport("user32.dll")] public static extern ReturnType FunctionName(type arg1, type arg2, ...); 其中,...

    Calling-Chrome-Extension-using-Selenium-WebdriverJs:使用Selenium WebdriverJs自动测试Chrome扩展

    对于使用Selenium WebdriverJs自动测试Chrome扩展,测试用例用NodeJ,MochaJ和Selenium WebdriverJs编写*-该测试包含-1从Selenium WebdriverJs和ChromeDriver调用某些Chrome Extension -2登录到某些Chrome Extension...

    communication-services-web-calling-tutorial:Azure Communication Services的Web调用功能的入门样本

    cd communication-services-web-calling-tutorial / Project 通过从Azure门户配置Azure通信服务资源来获取连接字符串。 将连接字符串用作config.json文件中键connectionString值。 npm安装 npm运行构建 npm运行...

    motw-calling:MOTW 的呼叫能力

    <Project>> cd motw-calling dev_appserver.py . (如果您安装了适用于 Python 的 Google Cloud 工具) python -m SimpleHTTPServer 8080 (如果你没有安装 GCE for Python) 打开您最喜欢的浏览器并按照以下模式...

    Interface的测试代码,请光临

    getMethod.setRequestHeader("X-Up-Calling-Line-ID", "13800138006"); getMethod.setRequestHeader("Accept", "image/png,image/jpeg,image/Gif"); try { // 执行getMethod int statusCode = ...

    SARS-CoV2-variant-calling-example:一个具有教育意义的示例,该示例使用SARS-CoV2基因组,使用带有短读Illumina数据的调用变体

    git clone https://github.com/davidecarlson/SARS-CoV2-variant-calling-example.git 第三步 使用提供的环境文件,使用此分析中所需的软件创建新的conda环境: conda env create -f environment.yaml 步骤4 从...

    Calling Java Class Methods from C with JNI

    标题:"Calling Java Class Methods from C with JNI" 解释了如何使用Java本地接口(JNI)技术来从C语言代码中调用Java类的方法。JNI是Java提供的一种标准编程接口,允许Java代码和其他语言写的代码进行交互。这在...

    bonobo-calling-express:no黑猩猩电话快递

    "bonobo-calling-express:no黑猩猩电话快递" 是一个基于JavaScript的项目,看起来它正处于开发阶段(Work In Progress,简称WIP)。这个项目的标题可能是以一种幽默或创意的方式命名,暗示着该项目可能涉及某种形式...

    Python库 | joint-calling-0.1.90.tar.gz

    资源分类:Python库 所属语言:Python 资源全名:joint-calling-0.1.90.tar.gz 资源来源:官方 安装方法:https://lanzao.blog.csdn.net/article/details/101784059

Global site tag (gtag.js) - Google Analytics