C#(.NET)的扩展方法使用场景实例

C#开发 2015-02-27 9620阅读 0评论 0收藏 收藏本文
“.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;
    }
  }
}
测试截图: 20150227133618 以上示例是对一个文档类“Document”的内容进行单词统计,示例中使用了常规及扩展两种方法来处理。可以看到,如果使用扩展方法,我们可以在对象"doc"上直接调用WordCount,而且不需要传入“doc”这个参数。传统的"NormalWordCount"方法则需要传入对应的参数,并且笔者认为使用扩展方法更为直观。

转载请注明:图享网 » C#(.NET)的扩展方法使用场景实例

文章评论

获取验证码