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方法了

  • 相关阅读:
    自己用Django搭建的blog和用户权限
    python实现简单爬虫功能
    异步任务队列Celery在Django中的使用
    Django添加全文搜索功能入门篇
    Django 最好的缓存memcached的使用
    Django中添加富文本编辑器
    Python之Django 访问静态文件
    Django中url的逆向解析 -> Reverse resolution of URLs
    python(Django之html模板继承)
    IOS7以后无需自定义,改变UITabbarItem的图片文字颜色
  • 原文地址:https://www.cnblogs.com/bomo/p/2866381.html
Copyright © 2011-2022 走看看