扩展方法的快速理解

---恢复内容开始---

    今天记录一下自己对扩展方法的理解,扩展方法就是实现某种功能但是在原有的类或程序集中又不存在这种功能实现的方法或者封装,继而衍生出扩展方法。但是新建一个类来封装实现这种功能的方法也可以达到目的而且使用继承机制也可以实现,为何有衍生扩展方法呢?

    

  1. 第一种方式是比较通用的一种方式,也是通常情况下使用最多的,但和扩展方法比较来说,代码的可读性不如扩展方法。
  2. 继承的方式是一个很好的扩展方案,但有时不一定是完美的,比如:a. 每次继承都会产生新类,且使用时需要进行相应的强制转换(string=>MyString),b. 有些类本身设计为密封类,是不允许被继承的,如上所使用的例子string是不允许被继承的,所以第二种方案是不可行的。这时,第三种方案扩展方法就派上用场了。

  所以扩展方法登场可以完美的解决以上两种机制所产生或者遗留的问题和不足,进一步了解扩展方法的用法吧!

  声明扩展方法必须符合以下特性:

  1. 该方法必须声明在静态类中且方法类型为静态方法
  2. 方法的第一个参数类型是可扩展的类型
  3. 第一个参数需加this关键字

  写个demo来看看:

namespace zhengze
{
    public static class Myarr
    {
        public static int GetAdd(this int[] arr)
        {
            int max = 0;
            for (int i = 0; i < arr.Length; i++)
            {
                max += arr[i];
            }
            return max;
        }
    }
}

然后调用方式:

namespace zhengze
{
    class Program
    {
        public static void Main(string[] args)
        {
            
            int[] arr = {1,3,5,7 };

            Console.WriteLine(arr.GetAdd());
        }
    }
}

这样我的一个简单的扩展方法就完成了。如何识别一个扩展方法:

  1. 第一个参数类型为this的方法
  2. 方法图标标有下标箭头

以上内容有部分来自于园友http://home.cnblogs.com/u/codelir/博客。本章内容只是供自己理解复习加深记忆,有不足的地方请指出!---献给第二次的自己

 

---恢复内容结束---

转载于:https://www.cnblogs.com/ymcome/p/5328682.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值