2013-01-10 36 views
0

我卡在我的代碼!c#做 - 雖然回電

我有一個Do -While循環和內我的switch-case和各自具有的if else條件是這樣的:

這是問題所在 當我按下重試按鈕(如果其他條件)我想回到Do Loop的中間,然後再次運行以檢查... 我不太確定我該怎麼做。 任何幫助將是偉大的。

+2

'繼續;'...... –

+0

請儘量使用標準的英文大小寫和標點符號在您的文章。 – JLRishe

回答

2

如果開關盒位於循環體的底部,您可以直接撥打continue和循環,重新開始。

如果你需要從循環的中間開始,而不是開始,我能想到的唯一方法是將中間包裹在另一個循環體中。現在continue將適用於內循環,你會得到你想要的。

如果沒有其他選擇,你可以使用goto,但beware the consequences

+0

「如果沒有其他的選擇,你可以使用goto」......但是當然要意識到這將會[引起你自己和其他人的傷害](http://www.u.arizona.edu/~rubinson/copyright_violations/Go_To_Considered_Harmful。 html) – Jeff

1

我真的不知道爲什麼你會在一個巨大的循環和switch語句組織你的代碼是這樣的。對我而言,我可能會打破這一點。這將使它更容易遵循。但也許你有一個理由。

如果可以,創建一個內部循環並繼續執行該循環,直到返回一個非重試值。

如果這真的不起作用,那麼我沒有使用goto以上。我知道這是很多人的禁忌,但我的目標是編寫清晰的代碼。如果您知道自己在做什麼以及在最清晰的代碼中輸入goto結果,那麼我會說。

+0

'goto'很容易被濫用,但它也很容易以清晰易懂的方式使用。 – dreamlax

+0

沒錯,建議開發者完全避免使用goto,直到他們對更高級的構造思考起來非常舒適。但是,一旦開發人員達到這一點,我認爲從不使用'goto'很愚蠢。 –

0

您可能想將代碼拆分爲可讀性和維護性功能。我建議你試試這個:

do 
{ 
    if(eErrorCode!=0) 
    { 
    if(GetResult(eErrorCode) == "Break") 
     break; 
    } 
} 

private string GetResult(eErrorCode) 
{ 
    switch(eErrorCode) 
    ... 
}