可选参数、重载方法或属性
本文关键字:方法 属性 重载 参数 | 更新日期: 2023-09-27 18:01:18
可能重复:
您应该在C#4.0中使用重载或可选参数来声明方法吗?
嗨,有一种方法越来越多地获得参数。问题是,这些参数中的大多数都是可选的,因为它们只会在某些情况下影响方法,而在大多数调用方法的实例中不需要。
现在的问题是我应该使用吗
-
可选参数
public object MyMethod(string param1, string param2, string optionalParam = null)
-
过载方法
public object MyMethod(string param1, string param2, null)
public object MyMethod(string param1, string param2, string optionalParam)
-
属性
建议欢迎
我绝对建议使用oveloaded方法,因为它们的TypeSafe不喜欢参数{objects},而且随着参数数量的增加,您应该可以控制参数数组length的长度和所有这些混乱。从来都不喜欢这种方法,所以我绝对支持过载。当做
我喜欢使用重载方法而不是可选参数,因为:
- 它更漂亮
- 您可以使用intellisense来记录每个不同重载的使用情况
- 除非你的方法可能同时需要所有这些可选参数,否则你不会得到一个尼罗河长度的方法名称
现在,关于属性的使用。。。我通常倾向于使用以下条件:
- 不止一种方法需要这些变量中的数据和/或
- 包含该方法的类之外的多个位置需要访问/调用这些变量
IMHO。
您有多少个参数?如果我开始得到很多参数,并且它们是相关的,我通常会将它们封装到一个类中,并将其用作方法的单个参数。它节省了大量的重载和复杂的签名。我相信会有人不同意这种方法,但我发现它经常提高代码的可读性。
您还可以创建一个类,该类包含参数属性
class Params
{
public string param1 { get; set; }
public string param2 { get; set; }
}
public void MyMethod(Params param) { ....}
然而,我觉得你可能会重新考虑你的申请。。。(但我不知道您的应用程序的要求(
在这种情况下,您应该使用可选参数。
如果函数的参数和/或参数类型或返回类型不同,则应使用重载。