C# 如果未遵循特定条件,则返回函数

C# 如果未遵循特定条件,则返回函数,c#,C#,如果函数中未遵循条件,是否可能不执行函数C public void functionA() { if(!specificCondition) { return; } } public void functionB() { functionA();/*Conditions did not meet so i no longer want the next function to execute anymore */ functio

如果函数中未遵循条件,是否可能不执行函数C

public void functionA()
{
    if(!specificCondition)
    {
        return;
    }
}

public void functionB()
{
    functionA();/*Conditions did not meet so i no longer want the next 
    function to execute anymore */
    functionC();  
}

public void functionC()
{
    Console.WriteLine("OK");
}

当然,在打电话给他们之前先检查一下情况:

public void functionB()
{
    if(specificCondition)
        functionA(); 
    if(specificCondition)
        functionC();  
}

另一个选项是返回bool,您可以在调用下一个方法之前检查它。

只需从function返回bool即可

public bool functionA()
{
    if(!specificCondition)
        return true;
    return false;
}

public void functionB()
{
    if(!functionA())
        functionC();  
}

public void functionC()
{
    Console.WriteLine("OK");
}
我希望这段代码能帮助你。。。在这里我们可以得到 functionA中的specificCondition作为参考,并在functionB中使用 作出决定,履行职责

使用Ref

public void functionA(ref bool cond)
        {
            cond = specificCondition;
            if (!specificCondition)
            {
                return;
            }
        }

        public void functionB()
        {
            bool cond = false;
            functionA(ref cond);

            if (cond)
            {
                functionC();
            }
        }

        public void functionC()
        {
            Console.WriteLine("OK");
        }
用完了

public static void functionA(out bool cond)
            {
        bool specificCondition = true;
                cond = specificCondition;
                if (!specificCondition)
                {
                    return;
                }
            }

            public static void functionB()
            {
                bool cond;
                functionA(out cond);

                if (cond)
                {
                    functionC();
                }
            }

            public static void functionC()
            {
                Console.WriteLine("OK");
            }

我应该明确指出,从函数返回布尔条件是正确的方法。但是,如果您发现自己处于无法更改其他方法的参数或返回类型的情况下,则可以使用类级变量

class myClass
{
      var specificCondition = false;

    public void functionA()
    {
        var resultOfThisMethod = specificCondition;
        /*do stuff
        *
        *
        */
         if(resultOfThisMethod != testedcondition) 
              specificCondition = false;
    }

    public void functionB()
    {
        functionA();/*Conditions did not meet so i no longer want the next 
        function to execute anymore */
        specificCondition ? functionC() : return;  
    }

    public void functionC()
    {
        Console.WriteLine("OK");
    }



}

将function更改为返回bool,以确定是否运行functionC。您可以从function返回bool,然后在iffunctionA{functionC;}后调用function中的functionCcondition@KingoftheNorth我想他不希望functionC总是在functionA内部被调用,否则functionB就没有任何用途。@Sudsy1002 functionC的目标是向控制台输出OK。我假设这个方法是用来提醒用户一切正常。直到OP确定其用例条件在功能内部。我的意思是调用functionA不需要检查,只有调用functionC需要检查。@Sinatr:1它似乎是一个类成员,因为OP没有显示它是一个局部变量。2如果它是一个局部变量,他需要使它成为一个类成员anyway@Sinatr:是的,如果不在方法中,它看起来更干净。只有当functionA将检查此条件并将bool属性设置为true或false时,才需要在不使用ifspecificCondition的情况下调用functionA-check@PaulF:在第一次调用和第二次调用之间,可能会发生某些更改,例如另一个线程。我不能假设我不知道的事。如果条件是一个简单的bool属性,那么检查两次也无妨。@PaulF:OP在哪里说如果functa不运行,那么function c就不应该运行?他说如果functionA中的条件不满足,他不想执行functionC。这不是前后颠倒的吗?当functionA中的条件不满足时,那么C不运行。@PaulF OP说如果funcA中不满足条件,则funcC不应运行run@someguy76这就是我要指出的——在上面的代码中,如果不满足条件,function将返回true——从而允许函数运行。如果条件满足,则返回false,停止正在运行的函数。@PaulF可能。我的观点是关于如何使用返回布尔值的函数。如果需要的话,作者可以想办法把书翻过来。@PaulF我明白了,好吧!将使其工作取决于OP需要条件做什么。这比将Function的返回类型更改为Boolean有什么好处?可能他不想使用ref从该方法返回任何内容,但实际上您仍然从该方法返回bool。即使functionA返回bool,也可以像返回void一样调用它,就像functionA一样;另外,我认为你的意思是out而不是ref,因为OP希望传递值,而不是接受一个它们也可以更改的值。我应该明确指出,从函数返回布尔条件是正确的方法嗯,还有其他正确的方法。