0

私は自分のコードで立ち往生しています!

Do -While ループがあり、内部に Switch-Case があり、各ケースには次のような If Else 条件があります。

ここに問題があります (If-Else 条件で) [再試行] ボタンを押したら、Do ループの途中に戻って、確認のためにもう一度実行したいのですが、どうすればよいかわかりません。どんな助けでも素晴らしいでしょう。

4

3 に答える 3

2

switch ケースがループ本体の一番下にある場合は、ループを呼び出して最初から繰り返すことができますcontinue

ループの最初ではなく、途中から開始する必要がある場合、私が考えることができる唯一の方法は、別のループ本体で途中をラップすることです。continueこれで内側のループに適用され、必要なものが得られます。

他のオプションがない場合は、gotoを使用できますが、結果に注意してください

于 2013-01-10T03:00:11.293 に答える
1

巨大なループと switch ステートメントでこのようにコードを構成する理由が本当にわかりません。私にとっては、おそらくそれを壊すでしょう。フォローしやすくなります。しかし、おそらくあなたには理由があります。

可能であれば、内部ループを作成し、再試行しない値が返されるまでそのループを実行し続けます。

それが本当にうまくいかない場合、私はgoto. 多くの人にとってそれがタブーであることはわかっていますが、私の目標は明確なコードを書くことです。そして、自分が何をしているのかを知っていて、そのgoto結果が最も明確なコードになる場合は、それを実行してください。

于 2013-01-10T03:01:00.313 に答える
0

おそらく、コードを関数に分割して、読みやすさとメンテナンスの観点から見たいと思うでしょう。これを試すことをお勧めします:

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

private string GetResult(eErrorCode)
{
  switch(eErrorCode)
  ...
}
于 2013-01-10T03:07:06.273 に答える