Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/268.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 模糊递归(?)重载调用_C#_Function_Call_Overloading_Ambiguous - Fatal编程技术网

C# 模糊递归(?)重载调用

C# 模糊递归(?)重载调用,c#,function,call,overloading,ambiguous,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

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

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

当您提供具有相同名称的多个方法时,该方法被称为重载。不能在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;
}

@达斯宾莱特是对的。将函数命名为描述性名称也是一种很好的做法


示例:bool isenvironment tickCount666()。函数名中的Is使阅读您的代码的人很容易看到您返回的bool

重载仅与C#中不可能的结果类型不同。您到底想做什么?错误是以下方法或属性之间的调用不明确。我唯一的错误!声明具有不同返回值的重复函数不会导致错误!这就是为什么我感到困惑的原因,我相信有一种方法可以指向精确的函数。如果只搜索“c#member重载”,就会找到答案:
更改方法的返回类型不会使该方法像公共语言运行时规范中所述那样唯一。您不能定义仅因返回类型而异的重载。