我有一个带有可选参数的辅助方法
Work(string input = DefaultInput)
{
//do stuff
}
我对此有一个包装器,它也接受字符串 input
,但这也可以是可选的...
WorkWrapper(int someParameter, string input = DefaultInput)
{
//do initialization
Work(input);
}
这里的问题是我重复引用了 DefaultInput,如果我将工作的默认输入更改为 NewDefaultInput
,我也需要更新 workWrapper,否则它仍然会使用旧的默认值。
有没有办法让默认输入不需要声明两次?可能没有 workwrapper 的两个重载..
最佳答案
如果您希望默认值在两种方法之间同步,您真的不需要包装器中的默认值,对吧?
public void Work(string input = DefaultInput)
{
//do stuff
}
…
public void WorkWrapper(int someParameter, string inputOverride = null)
{
//do initialization
if (inputOverride == null) Work();
else Work(inputOverride);
}
如果它们在同一个类/层次结构中,您也可以只声明一个 const
以确保默认值保持不变。
private const string DEFAULT_INPUT = "Default Input"; // protected if in base class
public void Work(string input = DEFAULT_INPUT)
{
//do stuff
}
public void WorkWrapper(int someParameter, string input = DEFAULT_INPUT)
{
//do initialization
Work(input);
}
关于c# - 如何级联可选参数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11130924/