从调用方法返回

时间:2015-12-14 01:15:04

标签: c# .net

我有方法

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()

3 个答案:

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