代码之家  ›  专栏  ›  技术社区  ›  Daarwin

state params参数在命名参数之后

c#
  •  0
  • Daarwin  · 技术社区  · 7 年前

    我有一个可选参数的方法。我试着看看我能承受多大程度的各种可能性。

    public static int PrintMenu(string message = "Choose an option....", string errorMessage = "error", bool clearScreen = true, params string[] list)
    

    最重要的参数是字符串数组。如果我只想更改一个命名参数,是否可以执行如下操作?以下内容:

    PrintMenu(errorMessage: "bad input", list : "listItem 1", "listItem 2", "listItem 3");
    
    2 回复  |  直到 7 年前
        1
  •  0
  •   Kryptos    7 年前

    params 是一种隐藏数组用法的语法糖。如果要显式命名,则需要实例化数组。

    PrintMenu(errorMessage: "bad input", list: new[] { "listItem 1", "listItem 2", "listItem 3" });
    

    也就是说,我建议不要过度使用命名参数 参数 是的。通常,这是一种代码气味的迹象,它的方法需要太多参数和/或执行太多任务。这也使它更难使用或事后阅读。

    这就是为什么我更喜欢显式声明重载,并且只对明显的标志使用可选参数(通常是布尔值),同时将其限制为最多两个这样的参数。

        2
  •  0
  •   Tim    7 年前

    是的,你可以。像这样做

    PrintMenu(errorMessage: "Bad input", list: new string[] { "list item 1", "list item 2"});