C# 重载方法可以强制转换其参数,然后调用其原始方法吗?

C# 重载方法可以强制转换其参数,然后调用其原始方法吗?,c#,overloading,C#,Overloading,我希望重载一个当前只接受一个int参数的方法。 重载将采用双精度或十进制 与重载在顶部强制转换其参数,然后使用与原始代码完全相同的代码不同,它们可以像这样调用原始代码吗 int total = 0; public void AddToTotal(int x) { total += x; } public void AddToTotal(double x) { AddToTotal((int)x); } public void AddToTotal(decimal x) {

我希望重载一个当前只接受一个
int
参数的方法。 重载将采用
双精度
十进制

与重载在顶部强制转换其参数,然后使用与原始代码完全相同的代码不同,它们可以像这样调用原始代码吗

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
值被添加,而不是被截断


如果你的方法在施法时失去了精度,那么就要明确,不要隐藏在重载中。

如果你不在乎失去精度,那就好了。是的,@GillBates失去精度是好的,但这并不被认为是不好的做法或任何事情?不,这是一种很好的做法,因为你重复使用代码。重复相同的代码没有意义,对但是为什么你首先想要这些重载呢?它们充其量是令人困惑的,而且它们并没有真正使代码更易于阅读。True@Luaan,我决定在调用该方法时采纳公认答案中的建议并进行强制转换,而不是让重载为您执行此操作。我以为OP是在问如果
addtotal((int)x)
是一个很好的实现,而不是
total+=(int)x,但无论如何,这是一个好的评论。