C#4.0 通过在方法中允许默认参数引入了一个非常奇特和有用的东西。但是 C#3.0 没有。因此,如果我想模拟“默认参数”,我必须创建两个该方法,一个带有这些参数,一个没有这些参数。我有两种方法可以做到这一点。
版本 A - 调用其他方法
public string CutBetween(string str, string left, string right, bool inclusive)
{
return str.CutAfter(left, inclusive).CutBefore(right, inclusive);
}
public string CutBetween(string str, string left, string right)
{
return CutBetween(str, left, right, false);
}
版本 B - 复制方法体
public string CutBetween(string str, string left, string right, bool inclusive)
{
return str.CutAfter(left, inclusive).CutBefore(right, inclusive);
}
public string CutBetween(string str, string left, string right)
{
return str.CutAfter(left, false).CutBefore(right, false);
}
这些之间有什么真正的区别吗?这不是关于优化或资源使用或任何东西的问题(尽管它的一部分是我保持一致的总体目标),我什至认为选择一种方法或另一种方法没有任何显着影响,但我发现它询问这些事情要比错误地假设更明智。