LINQ学习系列-----1.3 扩展方法

时间:2023-03-09 07:39:10
LINQ学习系列-----1.3 扩展方法

这篇内容继续接着昨天的Lambda表达式的源码继续下去。昨天讲了Lambda表达式,此篇讲扩展方法,这两点都是Linq带来的新特性。

   一.扩展方法介绍  

废话不多说,先上源码截图:

LINQ学习系列-----1.3 扩展方法

上图中GetMemoryCount就是一个扩展方法,从上图的标注可以得出以下几点信息:

1.扩展方法需要加this关键词

2.扩展方法和被包含的类必须是静态的

3.被包含的类不能是泛型类

深入总结:

1.扩展方法可以接收任意多个参数,不过第一个参数必须用this修饰。

2.扩展方法的基础是对象, 比如这个对象突然想额外加一个方法,那可以用扩展方法,第一个参数就是以这个对象为基础的参数。(扩展方法的基石是对象)

.扩展方法的智能感知  

当你扩展方法代码编写完成,并且没有问题的时候。你调用此对象的扩展方法时,IDE会有智能感知,见下图箭头处:

LINQ学习系列-----1.3 扩展方法

在上图中,也可以看到扩展方法的图标也不一样,是带有蓝色下坠标示。

.扩展方法的链式语句

            LINQ学习系列-----1.3 扩展方法

在上图可以看到,扩展方法带来的好处是可以进行语句的链式操作。

.扩展方法和正常方法的冲突

          先上源码:

LINQ学习系列-----1.3 扩展方法

从上图可以看到,在对象中没有找到对应的方法,就会去执行扩展方法(object是所有的基类)。执行结果:

LINQ学习系列-----1.3 扩展方法

    源代码:    LINQ学习系列-----1.3扩展方法(源码.rar