C#方法重载分辨率

时间:2014-11-10 17:06:11

标签: c# overloading

我有这些方法:

    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);

编译器抱怨:模糊调用。

我已阅读this article但我不明白为什么编译器知道如果参数是一个ulong它应该选择哪个方法但如果参数是一个浮点数就无法解决相同的情况......

2 个答案:

答案 0 :(得分:1)

根据MSDN,有一个从ulong到float的预定义隐式转换。因此,隐式转换会阻止编译器识别要调用的方法。

答案 1 :(得分:-2)

了解协方差和逆变here