C# 扩展方法


一、扩展方法

  1. 对于已编译成dll的类,有时候会需要进行扩展,但手上有没有源代码,此时可以使用this关键字作为形参,实现扩展方法。
  2. 扩展方法是静态方法

二、实例

1. 模拟一个类库

该类里面仅有一个方法。

using System;

namespace ClassLibrary
{
    public class MyClass
    {
        public void SayHi() 
        {
            Console.WriteLine("Hi");
        }
    }
}

2.实现扩展方法

增加一个SayHiAndBye的扩展方法。

public static class Extends
{
    //扩展方法
    public static void SayHiAndBye(this MyClass myClass)
    {
        myClass.SayHi();
        Console.WriteLine("Bye");
    }
}

3. 调用测试

扩展方法和原有方法调用方式一致。

class Program
{
    static void Main(string[] args)
    {
        MyClass myClass = new MyClass();
        //调用原有方法
        myClass.SayHi();
        //调用扩展方法
        myClass.SayHiAndBye();
    }
}

三、参考链接

https://docs.microsoft.com/zh-cn/dotnet/csharp/programming-guide/classes-and-structs/extension-methods

四、总结

扩展方法在保护已有封装的情况下,不需要拥有源码,不需要继承重写导致的大幅改动,对于加强代码的灵活性非常重要。


版权声明:本文为gehong3641原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。