博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
c# 如果一个对象的值为null,那么它调用扩展方法时为甚么不报错
阅读量:5828 次
发布时间:2019-06-18

本文共 452 字,大约阅读时间需要 1 分钟。

如果一个对象的值为null,那么它调用扩展方法时会报错吗?

Person p = null ;p.ExtendMethod();

上述代码出现的情况不会报错,刚开始遇到这种情况时很纳闷,就去问了大牛。大牛解释如下:

扩展函数其实只是为了让代码更具有可读性, 但最终在clr中会翻译成标准的静态函数调用,  

比如:  

public static void ExtMethod(this string str) {    if(!string.IsNullOrEmpty(str))    {         //对str处理          }    }

 调用  "string".ExtMethod()最终会翻译成ExtMethod("string"); 所以即使为null自然也不会报错

 

null 为什么点不出那个扩展函数?

  通过null获取它自己的方法如下:

 

 

  

  这样试试 ((string)null).ExtMethod() 肯定能点出来 

  

   关键是使用扩展函数要看对应的数据类型。

 

转载地址:http://nwodx.baihongyu.com/

你可能感兴趣的文章
node生成自定义命令(yargs/commander)
查看>>
各种非算法模板
查看>>
如何创建Servlet
查看>>
.NET 设计规范--.NET约定、惯用法与模式-2.框架设计基础
查看>>
win7 64位+Oracle 11g 64位下使用 PL/SQL Developer 的解决办法
查看>>
BZOJ1997:[HNOI2010]PLANAR——题解
查看>>
BZOJ1014:[JSOI2008]火星人prefix——题解
查看>>
使用Unity3D引擎开发赛车游戏
查看>>
HTML5新手入门指南
查看>>
opennebula 开发记录
查看>>
ubuntu 修改hostname
查看>>
sql 内联,左联,右联,全联
查看>>
C++关于字符串的处理
查看>>
6、Web Service-拦截器
查看>>
Flask 源码流程,上下文管理
查看>>
stream classdesc serialVersionUID = -7218828885279815404, local class serialVersionUID = 1.
查看>>
ZAB与Paxos算法的联系与区别
查看>>
Breaking parallel loops in .NET C# using the Stop method z
查看>>
修改故障转移群集心跳时间
查看>>
[轉]redis;mongodb;memcache三者的性能比較
查看>>