我有方法
public void x()
{
y();
z();
}
public void y()
{
if(some condition) return;
some code...
}
public void z()
{
somecode...
}
我知道如果符合method y()
条件,将返回somecondition
中的return语句而不执行该方法中的任何其他语句,并将返回method x()
并执行{ {1}}。但有没有办法从method z()
返回而不执行method x()
?
我无法更改任何约束或编辑method z()
答案 0 :(得分:5)
让y()
返回某种代码,让x()
知道是否要拨打z()
。
public void x()
{
if (y())
{
z();
}
}
// Return true if processing should continue.
//
public bool y()
{
if(some condition) return false;
some code...
return true;
}
public void z()
{
somecode...
}
答案 1 :(得分:1)
一种选择是从bool
返回y()
值。
public void x()
{
var isValidY = y();
if (isValidY)
z();
}
public bool y()
{
if(some condition) return false;
// some code...
return true;
}
public void z()
{
// some code...
}
如果您无法更改y()
,那么您必须在评论中留下建议的Enigmativity,并重复some condition
所代表的逻辑:
public void x()
{
y();
if (some condition) return;
z();
}
public bool y()
{
if (some condition) return;
// some code...
}
答案 2 :(得分:0)
如果您无法更改方法签名,请创建一个全局标志变量:
private bool shouldContinue = true;
public void x()
{
y();
if(shouldContinue)
z();
}
public void y()
{
if(some condition)
{
shouldContinue = false;
return;
}
some code...
}
public void z()
{
somecode...
}