扩展方法的快速理解

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了扩展方法的快速理解相关的知识,希望对你有一定的参考价值。

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

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

    

  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/博客。本章内容只是供自己理解复习加深记忆,有不足的地方请指出!---献给第二次的自己

 

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

以上是关于扩展方法的快速理解的主要内容,如果未能解决你的问题,请参考以下文章

VS中添加自定义代码片段——偷懒小技巧

扩展方法的快速理解

简单的方法来分享/讨论/协作的代码片段?

这几种 VSCode 扩展是我最喜欢的

Android 嵌套片段方法

理解片段事务期间片段的生命周期方法调用