我有这些方法:
static void OverloadedMethod(Action<ulong> handlerAction)
{
}
static void OverloadedMethod(Action<float> handlerAction)
{
}
static void HandlerA(ulong dataProgress)
{
}
static void HandlerB(float dataProgress)
{
}
我可以调用
OverloadedMethod(HandlerA);
没有问题,但如果我尝试调用
OverloadedMethod(HandlerB);
编译器报错:调用不明确。
我已阅读这篇文章,但我不理解为什么编译器知道如果参数是ulong应该选择哪个方法,但在参数为float的情况下无法解决同样的情况...
static void SomeMethod(float a){Console.WriteLine("In float method");}
和static void SomeMethod(ulong a) { Console.WriteLine("In ulong method");}
这样的方法,并且像SomeMethod(10);
这样调用它,那么它会正确解析,编译器不会出现任何歧义错误。因此,我不确定是否是隐式转换阻止了重载解析。 - Habib