C#扩展方法本质
来源:互联网 发布:控制热点软件 编辑:程序博客网 时间:2024/05/22 14:28
原则:
1、扩展方法是一个补丁的概念,在一个进程(一个程序集)的范围内,给某个类型临时加上方法。
所以扩展方法不能写在嵌套类,应该在程序集的全局区,这个程序集的顶级类中。
而且要求有二(在static类中,是一个static方法),this是它和一般的方法的区别符
2、扩展方法当然不能破坏面向对象封装的概念,所以只能是访问所扩展类的public成员。
3.扩展方法是静态方法,是类的一部分,但是实际上没有放在类的源代码中。
4.扩展方法所在的类也必须被声明为static
5.C#只支持扩展方法,不支持扩展属性、扩展事件等。
6.扩展方法的第一个参数是要扩展的类型,放在this关键字的后面,告诉编译期这个方法是Money类型的一部分。
7.在扩展方法中,可以访问扩展类型的所有公共方法和属性。
两种使用方法:
- using System;
- using System.Collections.Generic;
- using System.Linq;
- using System.Text;
- namespace blogok
- {
- static class ExtendMethod
- {
- public static void fun(this string s)
- {
- Console.WriteLine(s);
- }
- }
- class Program
- {
- #region 1
- static void Main(string[] args)
- {
- string s = "okokok";
- s.fun();
- ExtendMethod.fun(s);
- }
- #endregion
- }
- }
使用s.fun();这种形式调用,更能体现扩展的意味
使用ExtendMethod.fun(s);这种形式调用,则更能体现扩展方法实现的本质,便于理解为什么是只能访问锁扩展类型的public成员。
至于顶级类中、static类、static方法的规定,这是设计如此,应用在个程序集的范围中,添加新的设计,当然可以在一个类的范围内实现临时扩展,技术上是可行的只是意义不大。
LINQ的实现正是基于扩展方法,实现原理为:
在一个基类上进行扩展,一般而言扩展方法单独地建立一个命名空间,在使用的时候,导入这个命名空间,则开启了扩展方法的可见性,这个时候,所有子类便可以使用这个扩展方法了(因为子类继承了基类,public,static这样的权限级别更是很容易的满足直接调用)
0 0
- C#扩展方法本质
- C#扩展方法本质
- c#中的扩展方法
- C# 扩展方法
- C#扩展方法
- 关于C#扩展方法
- C#之扩展方法
- C#2008扩展方法
- C# 扩展方法
- C#扩展方法
- C#扩展方法
- C#扩展方法
- C# 扩展方法
- C# 扩展方法[学习]
- C# 扩展方法简介
- C#扩展方法
- c# 扩展方法
- c# 扩展方法
- Sql Server Alter语句 运用
- PM做事流程
- iptables的详细介绍及配置方法
- Xcode 升级后,常常遇到的遇到的警告、错误,解决方法
- 八、自定义数据类型
- C#扩展方法本质
- 一个非常适合单片机的滤波算法
- ArcGIS数据统计
- Project configuration is not up-to-date with pom.xml
- Foundation框架-字符串
- 单片机 滤波算法
- tomcat更改登陆端口
- 码流 / 码率 / 比特率 / 帧速率 / 分辨率 / 高清等的理解
- MySQL Alter语句 运用 .