我正在尝试使用相同数量的参数但不同类型重载C#中的方法。
private double scale(double value)
{
return value * 100 / scale;
}
private float scale(float value)
{
return value * 100 / scale;
}
但我收到此错误
错误4类型'[className]'已经存在 包含'scale'的定义
注意:我在MVS 2008工作
谢谢。
答案 0 :(得分:5)
此代码没有意义: 返回值* 100 /比例;
如果您的方法名称为scale
,那么该行末尾的scale
会有什么作用?
您的方法签名在语义上是正确的,因为这是完全合法的C#代码:
private float scale(float input)
{
return input;
}
private double scale(double input)
{
return input;
}
您的班级中似乎还有一个名为scale
的字段或属性:
private float scale = 0.15f;
答案 1 :(得分:2)
对我来说,它抱怨你用作变量的比例。 你可以有这样的东西
private double scale1 = 0.0d;
private double scale(double value)
{
return value * 100 / scale1;
}
private float scale(float value)
{
return (float) (value * 100 / scale1);
}
答案 2 :(得分:1)
您是否可以像调用方法一样调用成员变量?
float scale2;
private double scale(double value)
{
return value * 100 / scale2;
}
private float scale(float value)
{
return value * 100 / scale2;
}
这会编译,但您可能需要相同的返回类型。
答案 3 :(得分:1)
我认为这会给你带来麻烦。例如,如果参数是1.5
,编译器将如何知道您是否传递float
或double
?
除非你有特殊需要,否则我会坚持使用double
。
答案 4 :(得分:0)
您可以使用Generics。
\xd9\x86\xd8\xa8\xd9\x88\xd8\xaa
您可以使用float或double或任何结构替换private T scale<T>(T value) where T: struct
{
return value * 100 / scale;
}
。