我希望重载当前采用单个
int
参数的方法。
重载将改为采用 double
或 decimal
。
重载不是将其参数投射到顶部,然后具有与原始代码完全相同的代码,而是可以像这样调用原始代码吗?
int total = 0;
public void AddToTotal(int x)
{
total += x;
}
public void AddToTotal(double x)
{
AddToTotal((int)x);
}
public void AddToTotal(decimal x)
{
AddToTotal((int)x);
}
我认为这不是一个好主意,因为您向呼叫者隐藏了重要信息。 如果您仅公开
int
重载,调用者可以选择将 double
转换为 int
,因为知道它将被截断为整数。但是,如果您公开显式采用 double
的重载,我希望添加而不是截断 double
值。
如果您的方法在转换时失去精度,请使其显式,而不是隐藏在重载中。
在我看来,方法重载是一种危险的做法,必须非常小心地使用,或者根本不使用。请阅读我关于这个主题的博客文章:方法重载的隐藏危险。在本文中,我认为方法重载可能会对代码质量产生负面影响。它使我们在同一个名称下维护两个或多个实现,从而产生隐藏语义,然后不可避免地导致误解和功能缺陷。