0
点赞
收藏
分享

微信扫一扫

C#进阶学习--扩展方法(this)

追梦人的自留地 2022-01-12 阅读 48

一.扩展方法的作用

1.扩展密封类中的方法和属性

示例

假设又有一个第三方的类,如下:

    public sealed class Person
    {
        public string  Name { get; set; }
        public string  Phone { get; set; }
        public string getPhone()
        {
            return Phone;
        }
    }

现在有一个需求,需要给Person增加一个公共的调用方法,输出当前类的Name,由于Person类是密封类,所以不能被继承,这时候就可以使用扩展方法

 public static class PersonExtened
    {
        public static void ShowName(this Person person)
        {
            Console.WriteLine(person.Name);
        }
    }

这时即可直接调用该扩展方法,如下图所示:

2.扩展接口

现有如下接口与实现类

    public interface ICalc
    {
        int add(int num1,int num2);       
    }
    class CalcFun : ICalc
    {
        public int add(int num1, int num2)
        {
            return num1 + num2;
        }
    }

假设现在有如下需求,在不更改现有接口的前提下,给所有实现Icalc接口的类增加减法,乘法,与除法的功能?这时候就可以用扩展方法实现,实现方式如下:

    public static class CalcFunExtend
    {
        public static int min(this ICalc calc, int num1, int num2)
        {
            return num1 - num2;
        }
        public static int mul(this ICalc calc, int num1, int num2)
        {
            return num1 * num2;
        }
        internal static int min(int v1, int v2)
        {
            throw new NotImplementedException();
        }
        public static int div(this ICalc calc, int num1, int num2)
        {
            return num1 / num2;
        }
    }

这个时候再调用实现了Icalc接口的方法,即可同步实现减法,乘法与除法的功能,如下图所示:

总结

1.扩展方法的第一个参数必须要,并且必须用this修饰

2.扩展方法只能定义在静态类中

最后,其实所有的数据测试可以在云服务器进行,大家可以看看腾讯云的相关服务,买来作为测试数据的服务器非常不错,最低只要38一年

举报

相关推荐

0 条评论