1. 主页
  2. 文档
  3. C#进阶
  4. 第一章 各种方法汇总
  5. 第四节 扩展方法

第四节 扩展方法

扩展方法ExtendMethod:
定义:在静态类,定义静态方法,就是扩展方法。
使用场合:1,调用密封类中的对象,属性或方法(扩展密封类); 2、扩展接口

新建一个Person类,假如是是密封的,是不能继承的,也无法new()

    /// <summary>
    /// 假如这个类是别人那里拿过来的,不是自己写的; 假如这个类是密封的,是不能继承的,
    /// </summary>
    public sealed class Person
    {
        public string Name { get; set; }
        public int Age { get; set; }

        public string Phone { get; set; }

        public string GetPhone()
        {
            return Phone;
        }
    }

此时可以写个扩展类PersonExt

  /// <summary>
  /// 扩展方法的编写【这种方法使用的是比较多的】
  /// 定义一个静态类, 再写一个静态方法 再加上this 再加上一个Person类型,再加上Person类型的对象。
    /// </summary>
    public static class PersonExt
    {
        public static void ShowPhone(this Person person)
        {
            Console.WriteLine(person.Age);
            Console.WriteLine(person.Name);
            Console.WriteLine(person.GetPhone());  //有个向下的小箭头表示是扩展方法。
        }
    }

在Main函数中添加以下代码

static void Main(string[] args)
{
     //扩展方法的调用
      Person p = new Person()
      {
           Age = 20,
           Name = "caiqing",
           Phone = "手机 13146076505"
      };
       PersonExt.ShowPhone(p);

}

首先创建一个接口类并添加没有函数体的方法

public interface InterfaceCalculateMethod 
{ 
      int Add(int a, int b); 
}

public class Acall : InterfaceCalculateMethod
{
       public int Add(int a, int b)
      {
          return a + b ;
     }
}

public class Bcall : InterfaceCalculateMethod
{
       public int Add(int a, int b)
       {
               return a + b;
       }
}

创建一个接口扩展类InterfaceExtend.cs

    /// <summary>
    /// 接口扩展,
    /// 如果是是继承接口方法则里面的函数接口都要实现,有多少个都要实现不是很灵活。
    /// </summary>
    public static class InterfaceExtend 
    {
        public static int Sub(this InterfaceCalculateMethod cal, int a, int b)
        {
            return a - b;
        }
        public static int Cheng(this InterfaceCalculateMethod cal, int a, int b)
        {
            return a * b;
        }
        public static int Div(this InterfaceCalculateMethod cal, int a, int b)
        {
            return a / b;
        }
    }

在Main函数中添加代码

static void Main(string[] args)
{
     //扩展方法的调用
      Person p = new Person()
      {
           Age = 20,
           Name = "caiqing",
           Phone = "手机 13146076505"
      };
       PersonExt.ShowPhone(p);
      //扩展接口的调用
      Bcall bc = new Bcall();
      Console.WriteLine(bc.Cheng(2, 3));

}
这篇文章对您有用吗? 1

我们要如何帮助您?