我有一个带有可选参数的工作方法
Work(string input = DefaultInput)
{
//do stuff
}
我有一个包装器,它也带有字符串input
,但这也可以是可选的......
WorkWrapper(int someParameter, string input = DefaultInput)
{
//do initialization
Work(input);
}
这里的问题是我重复对DefaultInput的引用,如果我将工作的默认输入更改为NewDefaultInput
,我还需要更新workWrapper,否则它仍然会使用旧的默认值。
有没有办法让默认输入不需要声明两次?可能没有工作包装的两个重载..
答案 0 :(得分:3)
如果你想让两个方法之间的默认值保持同步,你真的不需要包装器中的默认值,对吗?
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);
}