ここでは繰り返し処理で利用するテクニックの無限ループを学習します。
無限ループはC#に限った話じゃなく、よくある系ロジックなので全言語で使えます。
無限ループ
名前の通りループ内の処理を無限に繰り返します。for文かwhile文を利用して記述するので、実際のコードを見てみましょう。
これを実行すると処理が完了せず、色々めんどうなことになるので実行はしないでください。
ここではC#のfor文とwhile文について理解しましょう。これはプログラムの基本構造で説明した反復にあたる処理です。なお、プログラムの基本構造が分からない人は先に次の記事を読んでください。for statement (ステートメント)いわゆる繰り返し処理でfor文と呼びます。これは条件式を満たす限り、同じ処理を永遠と繰り返す構文です。ポイントは次の3つです。初期化で変数を宣言する 条件式に繰り返し条件を記述する 反復式で変数をインクリメ...
for文で無限ループ
終了条件を記述しないことで無限ループにします。なので、初期化と反復式は記述してもいいです。
namespace Sample
{
internal class Program
{
static void Main(string[] args)
{
// 無限ループ
for (;;)
{
// 無限に繰り返す処理
}
}
}
}
while文で無限ループ
対してwhile文で記述するとこうなります。条件式にtrueって書くのが分かりやすいです。
namespace Sample
{
internal class Program
{
static void Main(string[] args)
{
// 無限ループ
while (true)
{
// 無限に繰り返す処理
}
}
}
}
僕が無限ループを記述するときは、見やすさからwhile文しか使いません。
脱出方法
無限ループには終了条件がないわけですから、このままでは脱出できません。
では、どうやったら無限ループを終了して脱出できるのでしょうか。
簡単です。無限に繰り返す処理の一部に条件式を書いてbreakすればいいのです。
これはreturn等、ステートメント外に処理が流れる方法なら何でもOKです。
namespace Sample
{
internal class Program
{
static void Main(string[] args)
{
int i = 0;
// 無限ループ
while (true)
{
if (i == 100) // 脱出条件
break;
Console.WriteLine(i);
i++;
}
}
}
}
この例だと普通にfor文で書いたほうがよくねってなるけど、そこは気にしないでください。
無限ループは、このように何らかの条件式でループを脱出する必要があります。
活用方法
正直、色んな場面で利用するので活用方法なんて無限にあります。
例えばユーザーから特定の入力を受け取るまで繰り返す処理とか、プログラム動作中は一定時間ごとに同じ処理を繰り返すとか。
他にもゲームなんかは無限ループを利用した代表格ですね。ここは今後の経験で色んなパターンを覚えましょう。
一般的にwaitのない無限ループは高負荷です。大抵の場合は1CPUの使用率を食い尽くします。
Visual Studio経由の実行なら何とかなりますが、普通に実行すると面倒事になるので気をつけましょう。
あとがき
無限ループと聞くと真っ先に遊戯vs人形が浮かびます。
三幻神って全部かっこいいですよね。ちなみに僕はラー派です。
◆ C#に関する学習コンテンツ
この記事は参考になりましたか?
コメント