C# Extension扩展方法

一、为什么需要Extension

在传统的面向对象编程中,如果要为一个类添加新的方法,通常需要继承该类并创建一个子类。但是,这种方法存在一些问题,例如:

  • 如果要为多个类添加相同的方法,就需要创建多个子类,代码量会很大。
  • 如果要为 .NET Framework 或其他库中的类型添加方法,则不能直接修改这些类型的源代码。

而扩展方法使您能够向现有类型“添加”方法,而无需创建新的派生类型、重新编译或以其他方式修改原始类型。

最常见的扩展方法是 LINQ 标准查询运算符,它们将查询功能添加到现有的System.Collections.IEnumerableSystem.Collections.Generic.IEnumerable<T>类型。

二、 如何自定义一个Extension

string例子:

public static class MyExtensions
{
     public static int WordCount(this string str)
     {
         return str.Split(new char[] { ' ', '.', '?' },
                    StringSplitOptions.RemoveEmptyEntries).Length;
     }
}

public void static main()
{
    string s = "Hello Extension Methods";
    int i = s.WordCount();
}

同样也可以像调用静态方法那样实现:

string s = "Hello Extension Methods";
int i = MyExtensions.WordCount(s);
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容