“.NET中的扩展方法使你能够向现有类型“添加”方法,而无需创建新的派生类型、重新编译或以其他方式修改原始类型。 扩展方法是一种特殊的静态方法,但可以像扩展类型上的实例方法一样进行调用。”
以上是摘至MSDN对.NET扩展方法的描述,那么我们在实际开发中如何运用呢,下面我将以一个最简单的示例来加以说明。
首先看一下完整的测试示例代码:
using System; namespace ExtesionMethodDemo { public class Program { static void Main(string[] args) { var doc = new Document { Id = 1, Title = "Test title", Content = "Extension methods are a special kind of static method, but they are called as if they were instance methods on the extended type. For client code written in" }; //常规统计文档的方法 Console.WriteLine("单词个数:{0}", NormalWordCount(doc.Content)); //扩展的统计文档的方法 Console.WriteLine("单词个数:{0}", doc.WordCount()); Console.ReadKey(); } /// <summary> /// 常规的统计文档内容的方法 /// </summary> /// <param name="documentContent"></param> /// <returns></returns> static int NormalWordCount(string documentContent) { return documentContent.Split(new char[] { ' ', ',', '.', '?' }, StringSplitOptions.RemoveEmptyEntries).Length; } } /// <summary> /// 定义一个文档类 /// </summary> public class Document { public int Id { get; set; } public string Title { get; set; } public string Content { get; set; } } /// <summary> /// 定义一个文档的扩展类(扩展类必须是静态类) /// </summary> public static class DocumentExtension { /// <summary> /// 统计一篇文档内容单词个数的扩展方法(必须是静态方法) /// </summary> /// <param name="document"></param> /// <returns></returns> public static int WordCount(this Document document) { return document.Content.Split(new char[] { ' ', ',', '.', '?' }, StringSplitOptions.RemoveEmptyEntries).Length; } } }测试截图: 以上示例是对一个文档类“Document”的内容进行单词统计,示例中使用了常规及扩展两种方法来处理。可以看到,如果使用扩展方法,我们可以在对象"doc"上直接调用WordCount,而且不需要传入“doc”这个参数。传统的"NormalWordCount"方法则需要传入对应的参数,并且笔者认为使用扩展方法更为直观。
版权声明:本作品系原创,版权归码友网所有,如未经许可,禁止任何形式转载,违者必究。
发表评论
登录用户才能发表评论, 请 登 录 或者 注册