我有一个带有可选参数的方法。我试图看看我能在多大程度上超载所有可能性。
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");
答案 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
。通常,使用过多参数和/或执行过多任务的方法可能会产生代码异味。它还使以后使用或阅读变得更加困难。
这就是为什么我更喜欢显式声明重载,并且仅将可选参数用于明显的标志(通常为布尔值),同时将其限制为最多两个这样的参数。