扩展方法和设置参数默认值

系统 1584 0

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

  扩展方法是静态方法,他是类的一部分,但实际上没有放在类的源代码中,假如有一个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
      
      
        "
      
      
        );

        }
      
    

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

扩展方法和设置参数默认值


更多文章、技术交流、商务合作、联系博主

微信扫码或搜索:z360901061

微信扫一扫加我为好友

QQ号联系: 360901061

您的支持是博主写作最大的动力,如果您喜欢我的文章,感觉我的文章对您有帮助,请用微信扫描下面二维码支持博主2元、5元、10元、20元等您想捐的金额吧,狠狠点击下面给点支持吧,站长非常感激您!手机微信长按不能支付解决办法:请将微信支付二维码保存到相册,切换到微信,然后点击微信右上角扫一扫功能,选择支付二维码完成支付。

【本文对您有帮助就好】

您的支持是博主写作最大的动力,如果您喜欢我的文章,感觉我的文章对您有帮助,请用微信扫描上面二维码支持博主2元、5元、10元、自定义金额等您想捐的金额吧,站长会非常 感谢您的哦!!!

发表我的评论
最新评论 总共0条评论