定义多个同名方法时如何防止代码重复?

How do I prevent code duplication when defining multiple methods with the same name?

我最近发现你可以定义多个同名的方法,只要它们的参数不同(我相信这叫做方法重载)。因此,例如,在一个脚本中,我有一个名为 getDate(int date) 的方法和另一个名为 getDate() 的方法。这些方法之间的唯一区别是不接受参数的方法使用 class 中定义的静态整数而不是 date 参数。

我已经在 class 中将此逻辑用于至少 5 种不同的方法,但是像这样复制代码似乎非常混乱。有更优雅的解决方案吗?

只需根据需要调用方法,例如

//To Get the Date normally
DateTime date = getDate();
//Otherwise
date = getDate(1, DateTime.Today);

你打电话给他们应该没有问题。它们应该被 unity 正确重载,因为我用我的编辑器检查过它。

通常,最好有一个函数来完成您要实现的目标,而其他函数调用该函数(或相互调用)以避免重复实际逻辑。

我将使用您的示例:

Date GetDate(int date) {
    // -- do whatever you do here
    return DoAThing(date);
}

Date GetDate() {
    return GetDate(staticVar);
}

这样,如果您想更改获取日期的方式,则不必在多个地方更改代码,并且当您修改 GetDate(int date) 时,调用它的其他函数将很简单效仿。