C# 如果未遵循特定条件,则返回函数
如果函数中未遵循条件,是否可能不执行函数CC# 如果未遵循特定条件,则返回函数,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
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希望传递值,而不是接受一个它们也可以更改的值。我应该明确指出,从函数返回布尔条件是正确的方法嗯,还有其他正确的方法。