亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

C#代碼如何實現讓后面的代碼不執行???

C#代碼如何實現讓后面的代碼不執行???

C#
哆啦的時光機 2018-12-07 11:59:00
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; } 以上改過后的代碼,通過層級判斷方法的返回結果,來決定每個方法是否執行,少點還可以,但如果項目很多,那么這么多的判斷,肯定是非常臃腫的,需要消除。 求大神指點,同時也歡迎大家討論?。?!
查看完整描述

11 回答

?
小怪獸愛吃肉

TA貢獻1852條經驗 獲得超1個贊

被調用方不能決定調用方的操作.這是常識.

你說的臃腫是不存在的.調用方不判斷返回值這行代碼誰看的懂.神仙也不知道這么一行調用后面的就不執行了.

就算你拋異常出去.外面都能接了繼續跑.除非你把application結束了.

查看完整回答
反對 回復 2018-12-24
?
慕村225694

TA貢獻1880條經驗 獲得超4個贊

程序由 順序 判斷 循環組成,你就不要在這方面努力了

查看完整回答
反對 回復 2018-12-24
?
喵喵時光機

TA貢獻1846條經驗 獲得超7個贊

是的,努力也無效,最終我放棄這種思路,仍采取我文中最后的方式,每個方法中都增加判斷的機制。

雖然重復了一些代碼,但這個是最簡單,最有效的,也便于理解的。

查看完整回答
反對 回復 2018-12-24
?
動漫人物

TA貢獻1815條經驗 獲得超10個贊

那與我上面的if (C() == false) return false;有什么區別,沒有區別,我就是想消除這種重復判斷

查看完整回答
反對 回復 2018-12-24
?
慕沐林林

TA貢獻2016條經驗 獲得超9個贊

@夢在旅途:?

沒有區別 但是邏輯上可以保持一致?

且這個邏輯 可以只實現一次

查看完整回答
反對 回復 2018-12-24
?
慕娘9325324

TA貢獻1783條經驗 獲得超4個贊

?我還沒怎么看懂意思,用線程怎么樣,給個標示量,特定的時候直接終止或者掛起線程

查看完整回答
反對 回復 2018-12-24
?
慕蓋茨4494581

TA貢獻1850條經驗 獲得超11個贊

用多線程,確實可以起到終止執行的效果,但會帶來許多的不便,比如:線程的同步問題,線程中操作UI控件等問題,雖說都有解決辦法,但會將本身簡單的方法復雜化,不可取。

查看完整回答
反對 回復 2018-12-24
?
海綿寶寶撒

TA貢獻1809條經驗 獲得超8個贊

@夢在旅途:?Response.End();好像這個就是終止了當前線程,所以你要做到這個效果一般都是針對某一個線程里面的情況。

因為你想讓后面的代碼不再執行,要不就跳出去(異常或者終止線程),要不就是加多代碼去判斷。要不然你沒要繞過待執行的代碼

查看完整回答
反對 回復 2018-12-24
?
藍山帝景

TA貢獻1843條經驗 獲得超7個贊

@Jimmy.pan: 我意思是 new 一個 Thread ?,然后就可以掌控它隨時讓他終止、掛起,但對主線程無影響了

查看完整回答
反對 回復 2018-12-24
  • 11 回答
  • 0 關注
  • 1530 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號