.Net平台下的扩展方法
2013-11-23 21:08
302 查看
扩展方法使您能够向现有类型“添加”方法,而无需创建新的派生类型、重新编译或以其他方式修改原始类型。扩展方法是一种特殊的静态方法,但可以像扩展类型上的实例方法一样进行调用。对于用 C# 和 Visual Basic 编写的客户端代码,调用扩展方法与调用在类型中实际定义的方法之间没有明显的差异。
该类必须对客户端代码可见。有关可访问性规则的更多信息,请参见访问修饰符(C# 编程指南)。
将该扩展方法实现为静态方法,并使其至少具有与包含类相同的可见性。
该方法的第一个参数指定方法所操作的类型;该参数必须以 this 修饰符开头。
在调用代码中,添加一条 using 指令以指定包含扩展方法类的命名空间。
按照与调用类型上的实例方法一样的方式调用扩展方法。
请注意,第一个参数不是由调用代码指定的,因为它表示正应用运算符的类型,并且编译器已经知道对象的类型。您只需通过 n 为这两个形参提供实参。
代码示例如下:
定义和调用扩展方法
定义一个静态类以包含扩展方法。该类必须对客户端代码可见。有关可访问性规则的更多信息,请参见访问修饰符(C# 编程指南)。
将该扩展方法实现为静态方法,并使其至少具有与包含类相同的可见性。
该方法的第一个参数指定方法所操作的类型;该参数必须以 this 修饰符开头。
在调用代码中,添加一条 using 指令以指定包含扩展方法类的命名空间。
按照与调用类型上的实例方法一样的方式调用扩展方法。
请注意,第一个参数不是由调用代码指定的,因为它表示正应用运算符的类型,并且编译器已经知道对象的类型。您只需通过 n 为这两个形参提供实参。
代码示例如下:
//包含扩展方法的类
namespace ExtensionMethodDemo { //类必须为非泛型静态类 public static class ExtensionMethodClass { //定义一个扩展方法,该方法是静态方法 public static string DoubleStr(this string s) { return s + s; } } }
//引用扩展方法的类
using System; //如果不在同一个命名空间需要添加引用 namespace ExtensionMethodDemo { class Program { static void Main(string[] args) { string s = "ABC"; //调用扩展方法 s = s.DoubleStr(); Console.WriteLine(s);//输出结果为"ABCABC" Console.ReadKey(); } } }
相关文章推荐
- Terracotta and Tomcat Clustering - Page 1
- HDOJ 骨铺方格
- [热门]浅谈360主动防御(360提示)、瑞星主动及360实时查杀的免杀技巧
- myeclipse中控制台日志比实际晚8小时解决方法及java日志处理
- java代码继承
- dm8127-内存分配
- [wp8游戏] cocos2d-x v2.2 + VS2013 环境搭建
- 分类器_模式识别_cvLoadHaarClassifierCascade
- 不宅在家能彻底改变你的未来
- IDC3516电流环隔离接口芯片的应用 转 学习
- block的定义和使用
- C#中利用JQuery实现视频网站的缩略图采集
- 《学习OpenCV(中文版)》第4章 练习3a
- 软工概述
- BOOTMGR is compressed的解决方法
- 3.MIL图像新建和显示
- CodeSampler DX9 Full-screen initialization
- Merge_Sort
- Windows:Windows 8安装64位Benq G900HD的显示器驱动
- retain, copy, assign以及autorelease