不明确的递归(?)重载调用

时间:2013-02-03 15:07:50

标签: c# function call overloading ambiguous

我该如何解决这个问题?我怎样才能指出我想要使用的确切重载?

    int A()
    {
        if (Environment.TickCount == 666)
            return 0;
        else
            return 1;
    }

    bool A()
    {
        if (A() == 0) //here's an error!
            return false;
        else
            return true;
    }

2 个答案:

答案 0 :(得分:2)

当您提供多个具有相同名称的方法时,该方法被称为重载。您不能在C#中重载返回类型的方法:您需要为它们指定不同的名称或不同的参数类型。在您的情况下,将bool A的名称更改为bool B可解决问题:

int A()
{
    if (Environment.TickCount == 666)
        return 0;
    else
        return 1;
}

bool B()
{
    if (A() == 0) //No error here
        return false;
    else
        return true;
}

答案 1 :(得分:0)

@dasblinkenlight是对的。将函数命名为描述性名称也是一种很好的做法。

示例:bool IsEnvironmentTickCount666()。函数名称中的Is使得阅读代码的人很容易看到你正在返回一个bool