3

我有一个带有可选参数的工作方法

Work(string input = DefaultInput)
{
    //do stuff
}

我有一个包装器,它也采用 string input,但这也可以是可选的......

WorkWrapper(int someParameter, string input = DefaultInput)
{
    //do initialization
    Work(input);

}

这里的问题是我重复了对 DefaultInput 的引用,例如,如果我将 work 的默认输入更改为NewDefaultInput,我还需要更新 workWrapper,否则它仍将使用旧的默认值。

有没有办法让默认输入不需要声明两次?可能没有工作包装器的两个重载..

4

1 回答 1

3

如果您希望默认值在两种方法之间同步,那么您真的不需要包装器中的默认值,对吧?

public void Work(string input = DefaultInput)
{
    //do stuff
}

…</p>

public void WorkWrapper(int someParameter, string inputOverride = null)
{
    //do initialization

    if (inputOverride == null) Work();
    else Work(inputOverride);    
}

如果它们在同一个类/层次结构中,您也可以只声明 aconst以确保默认值保持不变。

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);    
}
于 2012-06-21T03:29:06.287 回答