从调用方法返回

本文关键字:返回 方法 调用 | 更新日期: 2023-09-27 18:26:48

我有方法

public void x()
{
    y();
    z();
}
public void y()
{
    if(some condition) return;
    some code...
}
public void z()
{
    somecode...
}

我知道,如果满足somecondition条件,method y()中的return语句将在不执行该方法中任何其他内容的情况下返回,并且将返回到method x()并执行method z()。但是有没有办法在不执行method z()的情况下从method x()返回?

我无法更改任何约束或编辑method y

从调用方法返回

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...
}
一个选项是从y()返回一个bool值。
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...
}

如果不能更改方法签名,请创建一个全局标志变量:

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