zoukankan      html  css  js  c++  java
  • 【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方法了

  • 相关阅读:
    Web标准弃用window.applicationCache
    GDI+ DrawString字间距处理
    asp.net cache.count 报错
    CSS3实现文本垂直排列-writing-mode
    使用GDI+ 处理图片成圆图
    html5 input number类型使用整理
    border-radius实例2
    asp.netCore3.0 中使用app.UseMvc() 配置路由
    asp.netCore3.0区域和路由配置变化
    python数据分析个人学习读书笔记-目录索引
  • 原文地址:https://www.cnblogs.com/bomo/p/2866381.html
Copyright © 2011-2022 走看看