C#ループ制御: breakとcontinueの代替方法
C#のループにおけるbreakとcontinueの解説
C#のループ(forループ、whileループ、foreachループなど)において、break
とcontinue
は、ループの制御に重要な役割を果たします。
breakステートメント
- 機能: ループの処理を即座に終了します。
- 使用タイミング:
- ループの条件が満たされた場合
- ループ内でエラーが発生した場合
- 特定の条件を満たしたときにループを終了したい場合
例:
for (int i = 0; i < 10; i++)
{
if (i == 5)
{
break; // iが5になったらループを終了
}
Console.WriteLine(i);
}
continueステートメント
- 機能: 現在のループの反復をスキップし、次の反復に進みます。
- 使用タイミング:
for (int i = 0; i < 10; i++)
{
if (i % 2 == 0)
{
continue; // iが偶数なら次の反復へ
}
Console.WriteLine(i);
}
break
はループ全体を終了します。continue
は現在の反復をスキップし、次の反復に進みます。
breakの例:
for (int i = 0; i < 10; i++)
{
if (i == 5)
{
break; // iが5になったらループを終了
}
Console.WriteLine(i);
}
解説:
- このコードは、0から9までの数値を出力するforループです。
i
が5になったときにbreak
ステートメントが実行され、ループが終了します。- したがって、出力される数値は0から4までとなります。
continueの例:
for (int i = 0; i < 10; i++)
{
if (i % 2 == 0)
{
continue; // iが偶数なら次の反復へ
}
Console.WriteLine(i);
}
i
が偶数の場合、continue
ステートメントが実行され、現在の反復がスキップされ、次の反復に進みます。- したがって、出力される数値は1, 3, 5, 7, 9となります。
条件式を変更する
- ループの条件式を調整することで、ループの終了タイミングや反復をスキップする条件を直接制御できます。
for (int i = 0; i < 10 && someCondition; i++)
{
// ループの処理
}
この例では、someCondition
がfalse
になるとループが終了します。
ループ内のフラグを使用する
- ループ内でフラグ変数を設定し、特定の条件を満たしたときにフラグを更新することで、ループの終了や反復のスキップを制御できます。
bool shouldBreak = false;
for (int i = 0; i < 10; i++)
{
if (someCondition)
{
shouldBreak = true;
break;
}
// ループの処理
}
if (shouldBreak)
{
// ループがbreakで終了した場合の処理
}
この例では、shouldBreak
フラグがtrue
になると、ループが終了します。
gotoステートメントを使用する (注意: 適切な使用が重要)
goto
ステートメントを使用して、ループ内の特定のラベルにジャンプすることで、ループの終了や反復のスキップを制御できます。ただし、goto
は乱用するとコードの可読性が低下するため、慎重に使用してください。
for (int i = 0; i < 10; i++)
{
if (someCondition)
{
goto ExitLoop;
}
// ループの処理
}
ExitLoop:
// ループが終了した後の処理
この例では、goto
ステートメントを使用して、ExitLoop
ラベルにジャンプし、ループを終了します。
break
とcontinue
は便利な機能ですが、条件式やフラグ、goto
などの代替方法も考慮することができます。- 最適な方法は、コードの可読性、パフォーマンス、要件に応じて選択してください。
c# loops break