5

我有这样的事情:

void MethodToBreak()
{
    // do something

    if(something)
    {
        MethodThatBreaks();
        return;
    }

    // do something
}

void MethodThatBreaks()
{
    // do something
}

所以,我想知道:是否有可能中断执行:MethodThatBreaks()?然后,我会:if(something) MethodThatBreaks();如果里面的条件if为真,那行之后的任何内容都不会被执行。

注意:我知道else在这种情况下是可能的,但我不希望这样。

4

3 回答 3

4

如果您要扰乱另一种方法的执行,那将是一场噩梦。试图弄清楚为什么你的控制流在六个月后到处都是,或者对于另一个开发人员来说,会诱发动脉瘤。

你已经在那里做的事情没有错,尽管我个人会使用else. 是否有您不想使用的特殊原因else?如果剩下的代码太长,那可能表明你应该重构。

于 2010-09-16T09:25:45.287 回答
0

抛出异常MethodThatBreaks是一种可能性。因此,在MethodToBreak您放置 try catch 块的客户端中。

于 2010-09-16T09:25:46.963 回答
-2

这可以通过以下方式完成:声明全局变量

 a=null;
void MethodToBreak()
{
    // do something

    if(something)
    {
        MethodThatBreaks();
        if(a==null){

        } else{
        return;
        }
    }

    // do something
}

void MethodThatBreaks()
{
     a="somevalue";
    // do something
}
于 2014-01-09T18:11:20.233 回答