• 扩展方法


            扩展方法使你能够向现有类型“添加”方法,而无需创建新的派生类型、重新编译或以其他方式修改原始类型,而且不需要修改原本的类的程序代码。扩展方法被定义为静态方法,但它们是通过实例方法语法进行调用的。它们的第一个参数指定该方法作用于哪个类型,
    并且该参数以 this 修饰符为前缀。

            要实现扩展方法十分简单,首先决定要为哪个类实现扩展方法,接着建立一个静态类(static class),名称建议使用“要扩展的类名称”+Extension 字样,例如像扩展Int 方法,就将类命名为Int32Extension;要扩展DateTime,就命名为DateTimeExtension。接下来在类内加入要扩展的方法,但要注意两件事:
         (1)必须是静态方法,且名称不可以和现有的方法冲突。
         (2)至少要有一个扩展类型输入参数,扩展类型输入参数格式必须是“this[要扩展的类名称][参数名称]”,若有两个以上的参数,则扩展                  类型输入参数必须放在第一个,且不能设置默认值。

         下面是一个例子,想要扩展int 和double 两个对象,分为赋予产生货币字符串与百分比字符串的功能,按照扩展方法的规则,先定义Int32Extension 与DoubleExtension 两个类,并声明为static class

      public static class Int32Extension
      {
           public  static string FormatForMoney(this int Value)
           {
                return Value.ToString("$###,###,###,##0");
           }
      }
      public static class DoubleExtension
      {
           public static string FormatPercent(this doubel Value)
           {
                return Value.ToString("0.00%");
           }
      }

     

      using System;

      using static System.Console;
     
      namespace ExtensionTest
      {
          class Program
          {
              static void Main(string[] args)
              {
                  int money = 12456789;
                  double p = 0.123456;
     
                  WriteLine("{0}",money.FormatForMoney());
                  WriteLine("{0}", p.FormatPercent());
              }
          }
      }

    1.如果扩展方法与该类型中定义的方法具有相同的签名,则扩展方法永远不会被调用。

    2.针对已实现的类库,不应为了避免程序集的版本号递增而使用扩展方法。一般没有源代码,如果想对现有类进行扩展,可用扩展方法。

       如果要向你拥有源代码的库中添加重要功能,应遵循适用于程序集版本控制的标准 .NET Framework 准则。

    3.若要使用不同命名空间内的扩展方法,记得要加上命名空间声明(使用using),否则编译器会找不到扩展方法的类。

    https://www.cnblogs.com/rinack/p/5695067.html

    http://m.zhizuobiao.com/net/net-18111400139/

  • 相关阅读:
    cas 单点登录(SSO)实验之二: cas-client
    前端要给力之:语句在JavaScript中的值
    【Linux】Tomcat安装及一个服务器配置多个Tomcat
    【Linux】 JDK安装及配置 (tar.gz版)
    Android自动化测试中AccessibilityService获取控件信息(1)
    Android自动化框架 模拟操作 模拟测试
    Android应用程序如何调用shell脚本(一)
    关于lidroid xUtils 开源项目
    android 开源项目列表【持续整理中。。。】
    android开发常用组件【持续更新中。。。】
  • 原文地址:https://www.cnblogs.com/lu-yuan/p/11344277.html
Copyright © 2020-2023  润新知