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

时间:2011-07-05 13:50:31

标签: c#

  

可能重复:
  Should you declare methods using overloads or optional parameters in 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)

  • 属性

欢迎提出建议

5 个答案:

答案 0 :(得分:1)

我建议绝对是开发的方法,因为它们的TypeSafe不像参数{objects},并且随着参数数量的增加,你应该控制参数数组长度和所有那些混乱。永远不喜欢这种方法,所以我绝对是超载。 问候。

答案 1 :(得分:0)

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

  1. 它更漂亮
  2. 您可以使用智能感知来记录每个不同重载的使用
  3. 除非您的方法可能同时需要所有这些可选参数,否则您最终不会得到尼罗河长度的方法名称。
  4. 现在,关于属性的使用......我通常倾向于使用以下内容:

    1. 多个方法需要这些变量中的数据和/或
    2. 在包含该方法的类外面的多个地方需要访问/调用这些变量。
    3. IMHO。

答案 2 :(得分:0)

你有多少参数?如果我开始获得很多参数,并且它们是相关的,我通常将它们包装到一个类中并将其用作该方法的单个参数。它节省了过载和复杂签名的负担。我敢肯定会有人不同意这种方法,但我发现它通常会提高代码的可读性。

答案 3 :(得分:0)

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

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



}

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

但是,我觉得你可能会重新考虑你的申请......(但我不知道申请的要求)

答案 4 :(得分:0)

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

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