2017-01-19 25 views
-4
bool AllQuestionsAnswered() 
    { 
     for (int i = 0; i < Convert.ToInt32(count); i++) 
     { 
      string _1 = "rbchoice1_" + i; 
      string _2 = "rbchoice2_" + i; 
      string _3 = "rbchoice3_" + i; 
      string _4 = "rbchoice4_" + i; 

      bool c1 = ((RadioButton)tabControl1.Controls[_1]).Checked; 
      bool c2 = ((RadioButton)tabControl1.Controls[_2]).Checked; 
      bool c3 = ((RadioButton)tabControl1.Controls[_3]).Checked; 
      bool c4 = ((RadioButton)tabControl1.Controls[_4]).Checked; 

      if (c1 == false && c2 == false && c3 == false && c4 == false) 
      { 
       return false; 
       break; 
      } 
     } 
     return true; 
    } 

上記のコードは、「到達不能コードが検出されました」という警告を表示します。どうすれば修正できますか?もし警告を無視すれば大丈夫でしょうか?助けてください。c# - 到達不能なコードが検出された場合、forループ内のifステートメント内で中断する

+6

'break;'ステートメントを削除するだけです。 – Rob

+0

あなたはこれからいくつかのことを学ぶべきです:1)実際にキーボード上のキーを押すのではなく、あなたが書いているコードを実際に理解することを学びます。 2)デバッガを使用する方法を学んでください。これは、**その行に到達できない理由**を正確に伝えます。 3)コードを読むことを学ぶと、ループが全く不要な理由がわかります(デバッガのコードをステップ実行するときに 'string _'変数に割り当てる値を見てください)。 –

+0

なぜループは不要だと思いますか? –

答えて

-1

ロブがコメント内で言ったように: あなたは折り返し線をたどって、折れ線を描いています。 ブレークに到達できません(あなたが戻ったばかりです)。

0

return false;に達した場合は、AllQuestionsAnswered()になりますので、break;の文は必要ありません。 break;を削除して、あなたは行くのがいいでしょう!

0

ここでは2つのことに注意してください。ブレークはループ内でループの後に続くブロック内で反復を停止し、次のステートメントを実行するために使用できます。戻り値は囲みメソッドからあなたを追い出すのに対し、戻り値のコードは決して実行されません。返品はあなたのためになるので、breakを使用する必要はありません。 return false;を削除してbreakを続けると、このメソッドは常にtrueを返します。

関連する問題