無限ループを理解しよう!

[C#] 無限ループを理解しよう!

※ 当サイトは広告を含みます。

ここでは繰り返し処理で利用するテクニックの無限ループを学習します。
無限ループはC#に限った話じゃなく、よくある系ロジックなので全言語で使えます。

無限ループ

名前の通りループ内の処理を無限に繰り返します。for文while文を利用して記述するので、実際のコードを見てみましょう。
これを実行すると処理が完了せず、色々めんどうなことになるので実行はしないでください。

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#に関する学習コンテンツ

この記事は参考になりましたか?

関連記事

コメント

この記事へのコメントはありません。