扩展方法和设置参数默认值
2014-01-02 11:59
232 查看
有很多扩展类的方式,如果有类的源代码,继承是给对象添加功能的好方法。但如果没有源代码,我们可以用扩展方法,它允许改变一个类,但不需要该类的源码。
扩展方法是静态方法,他是类的一部分,但实际上没有放在类的源代码中,假如有一个Money类,里面有个Amount属性,我们想给其增加一个方法,可以如下编写:
其中,第一个参数是要扩展的类型,放在this关键字之后。在主程序中,AddToAmount看起来像是另一个方法。他没有显示第一个参数,也不能对他进行任何处理。要使用新方法,就要进行如下调用,这与其他方法相同:实例化类名.AddToAmount(10M)。
如果扩展方法与类中的某个方法同名,就永远不会调用扩展方法。类中已有的任何实例优先。
另外,在一个静态方法的第一个参数前面加this,可以在调用时直接用 要注意定义的的时候类需要是静态的。如:
此时在别处即可调用
在定义方法时,可以更灵活的设置默认值:
这样当参数有值时按定义返回,无参或为空时按默认值返回。
扩展方法是静态方法,他是类的一部分,但实际上没有放在类的源代码中,假如有一个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"); }
这样当参数有值时按定义返回,无参或为空时按默认值返回。
相关文章推荐
- 举例说明如何为JavaScript的方法参数设置默认值
- 举例说明如何为JavaScript的方法参数设置默认值
- js方法参数默认值设置
- js函数参数设置默认值的一种变通实现方法
- C#基础加强--this 的用法(重载构造方法,设置构造方法中参数的默认值)
- js函数参数设置默认值的一种变通实现方法
- JSP中初始化参数的设置和获取方法
- axios全局请求参数设置,请求及返回拦截器的方法
- oracle spfile参数设置错误的处理方法
- js设置function参数默认值(适合没有传参情况)
- PHPMyAdmin 出现 没有发现 PHP 的扩展设置mbstring 解决方法
- 字符串方法substring()的参数设置
- iOS: NSUserDefaults 要注意的地方 尤其首次设置默认值的方法
- U-boot中通过ENV设置显示设备(如LCD)参数的方法与格式
- js中对函数设置默认参数值的3种方法
- SQL SERVER存储过程,参数默认值设置
- Hive设置参数的三种方法
- SQL SERVER2000 存储过程 设置传入参数默认值
- select2 ajax 设置默认值,初始值的方法
- Linux中大括号扩展参数的使用方法