zoukankan      html  css  js  c++  java
  • 扩展方法和设置参数默认值

      有很多扩展类的方式,如果有类的源代码,继承是给对象添加功能的好方法。但如果没有源代码,我们可以用扩展方法,它允许改变一个类,但不需要该类的源码。

      扩展方法是静态方法,他是类的一部分,但实际上没有放在类的源代码中,假如有一个Money类,里面有个Amount属性,我们想给其增加一个方法,可以如下编写:

     public static class MoneyExtension
        {
            public static void AddToAmount(this Money money, decimal amountToAdd)
            {
                money.Amount += amountToAdd;
            }
        }

      其中,第一个参数是要扩展的类型,放在this关键字之后。在主程序中,AddToAmount看起来像是另一个方法。他没有显示第一个参数,也不能对他进行任何处理。要使用新方法,就要进行如下调用,这与其他方法相同:实例化类名.AddToAmount(10M)。

      如果扩展方法与类中的某个方法同名,就永远不会调用扩展方法。类中已有的任何实例优先。

      另外,在一个静态方法的第一个参数前面加this,可以在调用时直接用 要注意定义的的时候类需要是静态的。如:

     public static string AddAmazing(this string str)
            {
                return str + "!!!";
            }

      此时在别处即可调用

      在定义方法时,可以更灵活的设置默认值:

            private static string MakePath(string fileName = null)
            {
                return String.Format(@"c:{0}.txt", fileName ?? "Untitled");
            }

    这样当参数有值时按定义返回,无参或为空时按默认值返回。

  • 相关阅读:
    在线重定义 half
    系统测试概述 half
    Linux常用性能检测命令 half
    关于robotium half
    hudson集成 half
    铺满浏览器窗口的界面设计
    Intellij IDEA配置优化转载
    window下安装zookeeper
    kbengine集群控制工具
    使用installer安装kbengine
  • 原文地址:https://www.cnblogs.com/xuekai-to-sharp/p/3501623.html
Copyright © 2011-2022 走看看