• 【C#】扩展方法


      在.NET 3.5版本开始,引入了扩展方法,可以为已经设计好的类,为其添加一些方法,比如string类是系统已经定义好的,如果需要给该类添加一些函数,我们可以定义一个类StringExt继承string类,然后定义我们需要的函数,但如果是密封类的话,就不能通过继承来扩展该类如果我们只需要为一个类添加一两个函数,扩展的方法不是很多,通过继承的方法来扩展即增加了代码,而且系统对继承类所需的开销也比较大

      在.NET3.5提供了扩展方法,我们可以很容易的对一个类进行扩展,所花的开销比继承的方法小,效率更高

    下面为string类添加一个MyMethod方法,该方法输出字符串

     首先有几个规则

      1)扩展方法必须在一个非嵌套非泛型静态类

        定义该方法的类不能嵌套在其他类中,应直接在命名空间下定义

      2)扩展方法至少有一个参数

      3)扩展方法的第一个参数为扩展方法的类(我们对string类进行扩展,则第一个参数类型为string),必须加上前缀this

      4)第一个参数不能为指针类型,不能使用ref,out修饰符

        class Program
        {
            static void Main(string[] args)
            {
                string s = "test";
                string test = "Hello Bomo";
    
                s.MyMethod(test);       //调用扩展方法MyMethod
            }
        }
        //扩展方法类:必须为非嵌套,非泛型的静态类
        public static class StringExt
        {
            //为string类扩展的方法
            public static void MyMethod(this string str, string msg)
            {
                Console.WriteLine(msg);
            }
        }

      这样,string就多了一个MyMethod方法了

  • 相关阅读:
    POJ1064 浮点数二分答案
    2019牛客暑期多校训练营(第二场)H.Second Large Rectangle
    最大全1子矩阵的两种解法(例题:City Game HDU
    POJ
    Codeforces Round #588 (Div. 2) C
    1216E
    1221D
    BUY LOW, BUY LOWER, POJ
    Priest John's Busiest Day (2-sat)
    poj1080
  • 原文地址:https://www.cnblogs.com/bomo/p/2866381.html
Copyright © 2020-2023  润新知