class Program
{
public void x(int a, float b , float c)
{
Console.WriteLine("Method 1 ");
}
public void x(float a, int b,int c)
{
Console.WriteLine("Method 2 ");
}
static void Main(string[] args)
{
Program ob = new Program();
ob.x(1, 2, 3);
}
}
ob.x(1,2,3)
正在显示
错误1以下方法或之间的调用不明确 属性:'
OverloadDemo.Program.x(int, float, float)
'和 'OverloadDemo.Program.x(float, int, int)
'C:\ Users \ Public \ Videos \ SampleVideos \ Projectss \ OverloadDemo \ OverloadDemo \ Program.cs 25 13 OverloadDemo
方法2 has two arguments of
int type and
方法1 has two argumets of
int`类型。
所以方法1应该受到青睐。
为什么会出错?
答案 0 :(得分:2)
由于int
隐式转换为float
,编译器无法识别您打算调用的方法。你必须对这些类型更加有意识:
ob.x(1f, 2, 3);
VS
ob.x(1, 2f, 3f);
答案 1 :(得分:0)
一个简单的解决方案,就是当您使用此签名public void x(int a, float b , float c)
使用该方法时,请将其称为“
ob.x(1, 2.0f, 3.0f); // convert them to float
这将确保将它们作为float发送,并将第一个param作为整数发送。一个测试它的样本,在这里,测试它。 https://dotnetfiddle.net/9yaKJa