在命名参数之后声明状态参数

时间:2019-05-05 14:11:23

标签: c#

我有一个带有可选参数的方法。我试图看看我能在多大程度上超载所有可能性。

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 个答案:

答案 0 :(得分:0)

是的,可以。这样做

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

答案 1 :(得分:0)

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

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

也就是说,我建议不要过度使用命名参数和params。通常,使用过多参数和/或执行过多任务的方法可能会产生代码异味。它还使以后使用或阅读变得更加困难。

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