可选参数、重载方法或属性

本文关键字:方法 属性 重载 参数 | 更新日期: 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的长度和所有这些混乱。从来都不喜欢这种方法,所以我绝对支持过载。当做

我喜欢使用重载方法而不是可选参数,因为:

  1. 它更漂亮
  2. 您可以使用intellisense来记录每个不同重载的使用情况
  3. 除非你的方法可能同时需要所有这些可选参数,否则你不会得到一个尼罗河长度的方法名称

现在,关于属性的使用。。。我通常倾向于使用以下条件:

  1. 不止一种方法需要这些变量中的数据和/或
  2. 包含该方法的类之外的多个位置需要访问/调用这些变量

IMHO。

您有多少个参数?如果我开始得到很多参数,并且它们是相关的,我通常会将它们封装到一个类中,并将其用作方法的单个参数。它节省了大量的重载和复杂的签名。我相信会有人不同意这种方法,但我发现它经常提高代码的可读性。

您还可以创建一个类,该类包含参数属性

class Params
{
    public string param1 { get; set; }
    public string param2 { get; set; }

}
public void MyMethod(Params param) { ....}

然而,我觉得你可能会重新考虑你的申请。。。(但我不知道您的应用程序的要求(

在这种情况下,您应该使用可选参数。

如果函数的参数和/或参数类型或返回类型不同,则应使用重载。