スポンサーリンク
※サイト運営にサーバーは必須です※
~このサイトもエックスサーバーを使用しています~
break文
break文を使うことで、for文・while文といった繰り返し文のループを強制的に抜けることができます。
例えば、for(;;){}やwhie(true){}と書けば無限ループになります。
このような無限ループに対してもbreak文は有効です。
※言語はC#
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 |
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace Break01 { class Program { static void Main(string[] args) { while (true) { Console.WriteLine("break文の前"); break; Console.WriteLine("break文の後"); } for (; ;) { Console.WriteLine("for文の前"); break; Console.WriteLine("for文の後"); } } } } |
実行結果
break文の前
for文の前
break文の前までの処理は行われますが、break文の後の処理は行われません。
ちなみに、break文を抜くと、以下のように永遠と文字が出力されて終わりません。
break文の前
break文の後
break文の前
break文の後
break文の前
……
無論、無限ループ以外にもbreak文は使えます
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 |
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace Break02 { class Program { static void Main(string[] args) { int i = 0; int sum = 0; while (true) { sum += i; i++; if (i > 10) { break; } } Console.WriteLine("0~10の合計は" + sum); } } } |
実行結果
0~10の合計は55
break文の効果
break文は1つのループを抜けるだけの効果しかありません。
ネストの中のループ文から、外へ脱出したい場合、抜けたいループの数だけbreak文が必要です。
例えば、以下のようにwhile文の中にwhile文があった場合、このループを抜けるために、2つのbreak文が必要です。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 |
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace Break03 { class Program { static void Main(string[] args) { while (true) { while (true) { Console.WriteLine("内側"); break; } Console.WriteLine("外側"); break; } } } } |
実行結果
内側
外側
このようにネストの奥深くからループを抜けるのは一苦労します。
ループ文を強制的に抜けるためにgoto文が使われる場合も稀にあります。
goto文であれば、何重にも入れ子になったループ文を一発で抜けることが可能です。
※goto文は、コードの中の、任意の箇所へ移動することができます。しかし、goto文はソースコードの可読性を損ないやすいので、あまり使われません。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 |
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace Goto01 { class Program { static void Main(string[] args) { while (true) { while (true) { Console.WriteLine("内側"); goto step01; } Console.WriteLine("外側"); } step01: Console.WriteLine("step01へ到達"); } } } |
実行結果
内側
step01へ到達
Console.WriteLine(“外側”);は処理されません。
関連記事
~Webサイトを自分で作ってみませんか?~
Webサイトを運営するにはサーバーが必須です。
このサイトは、エックスサーバー のサーバーを使用しています。
エックスサーバーは無料で10日間お試しができます。