zoukankan      html  css  js  c++  java
  • 扩展方法

    扩展方法使你能够向现有类型“添加”方法,而无需创建新的派生类型、重新编译或以其他方式修改原始类型。 扩展方法是一种特殊的静态方法,但可以像扩展类型上的实例方法一样进行调用。(引自csdn)

    或许用一个例子说明更加明白

    扩展方法:

        public static class Helper
        {
            public static bool IsNullOrEmpty(this string str)
            {
                return string.IsNullOrEmpty(str);
            }
        }
    View Code

    使用:

        static void Main(string[] args)
            {
                Console.Write("qwe".IsNullOrEmpty());
                Console.ReadKey();
            }
    View Code

    扩展方法必须是静态类、静态方法,为什么要是静态的,看源码便可知道

    扩展方法其实就是 静态的方法调用

    ---------------------------------------------------------------------------------------------------------------------------

    当一个实例对象存在一个与扩展方法同名的方法时,会执行那个方法呢?

        public static class Helper
        {
            public static void Miao()
            {
                Console.WriteLine("我是扩展方法的小猫");
            }
        }
    
        public class Cat
        {
            public void Miao()
            {
                Console.WriteLine("我是实例发的小猫");
            }
        }
    View Code
      static void Main(string[] args)
            {
                Cat c = new Cat();
                c.Miao();
                Console.ReadKey();
            }
    View Code

    由此可见编译器 编译时会优先到Cat类中找 Miao 方法,如果找到则执行方法,没有找到才去找扩展方法并执行

  • 相关阅读:
    差分约束系统详解
    AC自动机详解
    KMP算法详解
    ST算法详解
    Trie详解
    欧拉路径详解
    树上差分详解
    LCA详解
    树链剖分详解
    树的直径详解
  • 原文地址:https://www.cnblogs.com/jhy55/p/4285066.html
Copyright © 2011-2022 走看看