25yicms利用ASP.NET(C#)+MSSQL技术全力打造功能最强大的营销型企业网站管理系统,企业做网站系统,做网站软件,提供div+css企业网站模板。
阅读内容

实际开发中如何运用C#(.NET)的扩展方法


时间:2015/02/28   来源:企业网站管理系统
 “.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;
    }
  }
}
 
测试截图:
实际开发中如何运用C#(.NET)的扩展方法
 
以上示例是对一个文档类“Document”的内容进行单词统计,示例中使用了常规及扩展两种方法来处理。可以看到,如果使用扩展方法,我们可以在对象”doc”上直接调用WordCount,而且不需要传入“doc”这个参数。传统的”NormalWordCount”方法则需要传入对应的参数,并且笔者认为使用扩展方法更为直观。
点击次数:       打印此页  关闭