A(); public void A() { B(); MessageBox.Show("我是A方法"); } public void B() { C(); MessageBox.Show("我是B方法"); //我想在此处加一些代码,让方法A后面的代码不再执行; } public void C() { MessageBox.Show("我是C方法"); //我想在此处加一些代码,让方法B后面的代码不再执行; }
如上示例代码,当调用A方法时,整个执行顺序是:A->B->C 然后返回:C->B->A
我想实现在B或C代码中,加入一些代码,让返回终止,即:调用到C后,不再返回B,C;
想实现类似ASP.NET Response.End方法一样:
Response.Write("aaaa"); Response.End(); Response.Write("bbb");
我想过几种方案:
1.抛错,这个是可以,但如果A,B,C三个方法中都有try catch,那么就失效,即合实现但也不优雅;
2.AOP,采用代理类,将要执行的代码放到代理方法的执行前与执行后中间,如果不需要后面的执行,则执行前return即可,但最终仍然会回到最开始的调用处A,不行;
3.将ABC三个方法代码封装到不同的类中CA,CB,CC,然后在执行到B时,提前释放类CA,但发现不行。
不知道大家有没有更好的方法,求指点!
之所以需要实现后面的所有代码都不执行,是因为我想减少每个执行代码都做判断,比如:
//调用: MessageBox.Show("开始调用"); if (A() == false) return; MessageBox.Show("回到初始调用处的下一行代码"); public bool A() { if (B() == false) return false; MessageBox.Show("我是A方法"); return true; } public bool B() { if (C() == false) return false; MessageBox.Show("我是B方法"); return false; //通过返回flase,让被调用方A自己再判断是否为false,若为false则不执行A后面的代码 } public bool C() { MessageBox.Show("我是C方法"); return true; }
以上改过后的代码,通过层级判断方法的返回结果,来决定每个方法是否执行,少点还可以,但如果项目很多,那么这么多的判断,肯定是非常臃肿的,需要消除。
求大神指点,同时也欢迎大家讨论!!!
小怪兽爱吃肉
慕村225694
喵喵时光机
动漫人物
慕沐林林
慕娘9325324
慕盖茨4494581
海绵宝宝撒
蓝山帝景
相关分类