私は自分のコードで立ち往生しています!
Do -While ループがあり、内部に Switch-Case があり、各ケースには次のような If Else 条件があります。
ここに問題があります (If-Else 条件で) [再試行] ボタンを押したら、Do ループの途中に戻って、確認のためにもう一度実行したいのですが、どうすればよいかわかりません。どんな助けでも素晴らしいでしょう。
私は自分のコードで立ち往生しています!
Do -While ループがあり、内部に Switch-Case があり、各ケースには次のような If Else 条件があります。
ここに問題があります (If-Else 条件で) [再試行] ボタンを押したら、Do ループの途中に戻って、確認のためにもう一度実行したいのですが、どうすればよいかわかりません。どんな助けでも素晴らしいでしょう。
switch ケースがループ本体の一番下にある場合は、ループを呼び出して最初から繰り返すことができますcontinue
。
ループの最初ではなく、途中から開始する必要がある場合、私が考えることができる唯一の方法は、別のループ本体で途中をラップすることです。continue
これで内側のループに適用され、必要なものが得られます。
他のオプションがない場合は、gotoを使用できますが、結果に注意してください
巨大なループと switch ステートメントでこのようにコードを構成する理由が本当にわかりません。私にとっては、おそらくそれを壊すでしょう。フォローしやすくなります。しかし、おそらくあなたには理由があります。
可能であれば、内部ループを作成し、再試行しない値が返されるまでそのループを実行し続けます。
それが本当にうまくいかない場合、私はgoto
. 多くの人にとってそれがタブーであることはわかっていますが、私の目標は明確なコードを書くことです。そして、自分が何をしているのかを知っていて、そのgoto
結果が最も明確なコードになる場合は、それを実行してください。
おそらく、コードを関数に分割して、読みやすさとメンテナンスの観点から見たいと思うでしょう。これを試すことをお勧めします:
do
{
if(eErrorCode!=0)
{
if( GetResult(eErrorCode) == "Break")
break;
}
}
private string GetResult(eErrorCode)
{
switch(eErrorCode)
...
}