2017-04-23 78 views
2

我希望超载一个方法,该方法当前只需要一个参数int。 重载将采取doubledecimal重载方法可以接受它们的参数,然后调用它们的原始方法吗?

而不是重载在顶部投入它们的参数,然后具有与原始的完全相同的代码,他们可以接受这样的原件吗?

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); 
} 
+0

如果你不在乎失去精确度,那很好。 –

+0

是的,@GillBates失去了精度是好的,但它不被认为是不好的做法或任何东西? –

+1

因为您重复使用代码,所以不是很好的做法。 –

回答

7

我不认为这是个好主意,因为你隐藏了来电者的重要信息。 如果您仅显示int过载,则调用者可以选择将double投射到int,并知道它将被截断为整数。但是如果你公开一个明显需要double的超载,我预计double值将被添加,而不是被截断。

如果您的方法在投射时失去精确度,请将其设为显式,而不是隐藏在过载内。

+0

我以为OP询问是否AddToTotal((int)x);'是一个很好的实现,而不是'total + =(int)x;',但这是一个很好的评论。 – kajacx

相关问题