前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >C#进阶学习--扩展方法(this)

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

原创
作者头像
腾云大使
修改2022-01-12 17:20:11
6650
修改2022-01-12 17:20:11
举报
文章被收录于专栏:用户9161392的专栏

一.扩展方法的作用

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

示例

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

代码语言:C#
复制
    public sealed class Person
    {
        public string  Name { get; set; }
        public string  Phone { get; set; }
        public string getPhone()
        {
            return Phone;
        }
    }

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

代码语言:C#
复制
 public static class PersonExtened
    {
        public static void ShowName(this Person person)
        {
            Console.WriteLine(person.Name);
        }
    }

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

2.扩展接口

现有如下接口与实现类

代码语言:C#
复制
    public interface ICalc
    {
        int add(int num1,int num2);       
    }
    class CalcFun : ICalc
    {
        public int add(int num1, int num2)
        {
            return num1 + num2;
        }
    }

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

代码语言:C#
复制
    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一年

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 一.扩展方法的作用
    • 1.扩展密封类中的方法和属性
      • 2.扩展接口
      • 总结
        • 1.扩展方法的第一个参数必须要,并且必须用this修饰
          • 2.扩展方法只能定义在静态类中
          领券
          问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档