如何在c#中重载不同参数类型的方法
本文关键字:参数 类型 方法 重载 | 更新日期: 2023-09-27 17:53:18
我试图在c#中重载一个方法,具有相同数量的参数,但不同的类型。
private double scale(double value)
{
return value * 100 / scale;
}
private float scale(float value)
{
return value * 100 / scale;
}
但是我得到了这个错误
错误4类型'[className]'已经存在包含'scale'的定义
注意:我在MVS 2008工作
谢谢。
这段代码没有意义:
return value * 100 / scale;
如果您有一个方法名称scale
,那么scale
在该行末尾做什么?
你的方法签名在语义上是正确的,因为这是完全合法的c#代码:
private float scale(float input)
{
return input;
}
private double scale(double input)
{
return input;
}
似乎你也有一个字段或属性命名为scale
在你的类:
private float scale = 0.15f;
对我来说,这是在抱怨你使用的规模作为一个变量。你可以这样写
private double scale1 = 0.0d;
private double scale(double value)
{
return value * 100 / scale1;
}
private float scale(float value)
{
return (float) (value * 100 / scale1);
}
可以像调用方法一样调用成员变量吗?
float scale2;
private double scale(double value)
{
return value * 100 / scale2;
}
private float scale(float value)
{
return value * 100 / scale2;
}
可以编译,但是您可能需要相同的返回类型。
我想这会给你带来麻烦。例如,如果参数是1.5
,编译器如何知道你传递的是float
还是double
?
我会坚持使用double
,除非你在这里有特殊需要。
可以使用泛型
private T scale<T>(T value) where T: struct
{
return value * 100 / scale;
}
您可以将T
替换为float或double或任何结构体