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

    扩展方法被定义为静态方法,但它们是通过实例方法语法进行调用的。 它们的第一个参数指定该方法作用于哪个类型,并且该参数以 this 修饰符为前缀。 扩展方法当然不能破坏面向对象封装的概念,所以只能是访问所扩展类的public成员。
      扩展方法使您能够向现有类型“添加”方法,而无需创建新的派生类型、重新编译或以其他方式修改原始类型。扩展方法是一种特殊的静态方法,但可以像扩展类型上的实例方法一样进行调用。
    C#扩展方法第一个参数指定该方法作用于哪个类型,并且该参数以 this 修饰符为前缀。
    扩展方法的目的就是为一个现有类型添加一个方法,现有类型既可以是int,string等数据类型,也可以是自定义的数据类型。
    为数据类型的添加一个方法的理解:一般来说,int数据类型有个Tostring的方法,就是把int 数据转换为字符串的类型,比如现在我们想在转换成字符串的时候还添加一点东西,比如增加一个字符 a .那么之前的Tostring就不好使了,因为它只是它我们的int数据转换为string类型的,却并不能添加一个字母 a.所以这就要用到所谓的扩展方法了。
    首先我们看一个给现有的类型增加一个扩展方法。
    我们想给string 类型增加一个Add方法,该方法的作用是给字符串增加一个字母a.

    public static class test
        {
            public static int CountYourNumber(this string str)
            {
                return str.Split(new char[] {' ','.','?' },
                    StringSplitOptions.RemoveEmptyEntries).Length;
            }
        }
    }

    扩展方法重要的需求如下:

    • 声明扩展方法的类必须声明为static.
    • 扩展方法本身必须声明为static.
    • 扩展方法必须包含关键字this作为它的第一个参数类型,并在后面跟着它所扩展类的名称。

    另外需要注意的是:c#只支持扩展方法,不支持扩展属性、扩展事件等。

  • 相关阅读:
    OrCAD原理图封装规则
    web的脚本安全-CSRF
    web的脚本安全-XSS
    数据库中左右连接
    如何解决Java.lang.NoClassDefFoundError
    css垂直居中
    网上免费的web service地址
    JS 正则表达式用法
    jQuery实现滚动条向下拉到一定的程度,然后这层就一直占着不管滚动条如何向下拉都不动了的效果
    Robot Framework + Selenium2Library环境下,结合Selenium Grid实施分布式自动化测试
  • 原文地址:https://www.cnblogs.com/mcyushao/p/9225838.html
Copyright © 2011-2022 走看看