中山市誉鼎照明系统服务有限公司欢迎您!

。NET扩展方法(a)中

作者:佚名    来源:http://www.51rugby.com    发布时间:2019-04-04 20:53    浏览量:

我记得刚学编程,老师经常提词:注意NULL指针。在某些确定,以便经常“入口”位置时,校验码,一个空指针是在其中一个工作。

串类型中通常使用的数据类型,它在项目发生的概率是如此之高,是经常有下面的代码片断:

每2对等号判决书,真烦,人问这个问题。在未来一段时间内,我们发现了一种新的写法:

但在有些地方还要确定是否一个空间。

且码长变长。等等,。NET 4.0来。

这种方法是非常强大的,可以判定不仅空间,同时也分析选项卡“\ 誉鼎照明系统t”像空白。

但。但。我还是觉得不舒服,如果我们可以得到以下效果做漂亮。

假设我们取得了一个String对象有一个方法的IsEmpty通过某种手段:

如果为IsEmpty是一个实例方法,STR目标为空,此时的调用方法必然的NullPointerException。

如果为IsEmpty是一个静态方法中,根据语法规则,该对象不是调用静态方法。

所以,这条路似乎行不通啊,怎么办呢?- 让扩展方法要解决这个问题。

C#编程指南 - 扩展方法,说明书给出:

它看起来扩展方法是很厉害啊,我们如何实现和调用自定义的扩展方法是?

1,因为扩展的方法“添加”到现有的类型,所以必须有一个类型,这里就是我们要添加的字符串类型的方法。

2,扩展方法是一种方法,该方法总是需要一个“载体”,所以我们需要一个类。所需要的只有两类:

1)为顶非泛型静态类,2)在代码方面的客户有足够的访问权限。

3,用于扩展方法的要求有四点,除了静态方法和条款的客户端代码有足够的访问权限,还需要:

第一个参数1)扩展方法必须是扩展的类型,这是字符串的类型。2誉鼎照明系统)只有第一个参数必须与此预选赛开始。

4,成品扩展方法,引进适当的命名空间(如果需要),按VS敏感的情报技巧,那么你可以编写代码来调用。

演示:

  

让我们在这个演示一下,哇,对象能够调用静态方法,它彻底打破了语法的以往的规则仔细看看啊。是对的吗?让我们在心中的犯罪嫌疑人的状态细看。

我们使用VS自带IL反汇编,反编译它,看看MSIL代码。为IsEmpty方法StringExtentsion类的签名如下:

 在客户端代码,它再看看:

 即使你不能读取MSIL代码,我想你也可以推断出正确的结果 - 是的,我们是编译器“作弊”,并将下列两项是等价的写法:

  

看到这里,延长方法已经有了一个大致的了解,我们回头看看C#编程指南 - 扩展方法,说明书给出的:

扩展方法让你“添加”方法对现有类型,而无需创建一个新的派生型,重新编译,或以其他方式修改原始类型。

加入双引号,因此而得名,其意是不是真正的加入,扩展方法有他们在方法签名,没有什么区别定义并编制了标准静态方法的静态类,

这个限定词,此时已经消失。

2,扩展方法是特殊的一种特殊的静态方法是它的语法规则,以确保编译器可誉鼎照明系统 以“对象扩展类型调用静态方法(扩展方法)的”这个语法的外观编译。

  试想一下,在编译时,编译器,它是要找到所有的域命名空间代码文件出台,这是一个很大的工作量当前的扩展方法(较多见:ExtensionAttribute)。

后记:

1,引的这个非常特殊的,绝对的权力扩展方法最多可显示的例子:

1)串是。NET类库,我们不能修改字符串类它。

2)串是密封类不能继承。

3)避免零指示字例外,根据语法规则是解决的静态方法的参数的最方便的方法,如串。像IsNullOrWhiteSpace方法,

但可以想象的形式调用一个实例对象的方法。

2,如果你添加一个扩展方法的对象会发生什么样的影响?(未完待续。)

相关新闻推荐

关注官方QQ

Copyright ©2011-2018 中山市誉鼎照明系统服务有限公司 版权所有 txt地图 HTML地图 XML地图 百度XML地图