[C#]反復文


繰り返し構文

for 문は、ループ内の文を繰り返し実行するために使用される.
forループは、通常、カウンタ変数を用いてループ内のブロックを一定範囲で動作する.
class Program
{
    static void Main(string[] args)
    {
        // for 루프
        for (int i = 0; i < 10; i++)
        {
           Console.WriteLine("Loop {0}", i);
        }
    }
}
コンソール出力を10回繰り返し(0から9まで)コードを出力します.

foreach繰返し構文

foreach 문は、主にアレイまたは集合に使用される.
foreachループのブロックを実行するために、コレクション内の各要素を1つずつ取り出します.
static void Main(string[] args)
{
    string[] array = new string[] { "AB", "CD", "EF" };

    // foreach 루프
    foreach (string s in array)
    {
       Console.WriteLine(s);
    }
}
foreachを使用して文字列要素の文字列配列を1つずつ出力するコード.

for vs. foreach


パフォーマンス

forは少し速いかもしれません.
ほとんどの場合、パフォーマンスの差は大きくなく、foreachの利点は、forよりも簡潔なコードを提供することである.
特にリングで最もよく使われるC#配列です.
foreachは内部最適化され、for roughと同じ性能を有する.
より簡潔なforeachを使用することをお勧めします.
たとえば、セカンダリ・アレイやセカンダリ・アレイなど、複数のアレイを処理します.
  • for loop:loopを配列順に複数回回転させる必要があります.
  • foreach:下図のように、1つのループ文で処理できるので便利です.
  • static void Main(string[] args)
    {
        // 3차배열 선언
        string[,,] arr = new string[,,] { 
                { {"1", "2"}, {"11","22"} }, 
                { {"3", "4"}, {"33", "44"} }
        };
    
        //for 루프 : 3번 루프를 만들어 돌림
        for (int i = 0; i < arr.GetLength(0); i++)
        {
            for (int j = 0; j < arr.GetLength(1); j++)
            {
                for (int k = 0; k < arr.GetLength(2); k++)
                {
                    Debug.WriteLine(arr[i, j, k]);
                }
            }
        }
    
        //foreach 루프 : 한번에 3차배열 모두 처리
        foreach (var s in arr)
        {
            Debug.WriteLine(s);
        }
    }

    while繰返し構文

    while 문 while条件式がtrueの場合、while blockを実行し続けます.
    static void Main(string[] args)
    {
        int i=1;
    
        // while 루프
        while (i <= 10)
        {
           Console.WriteLine(i);
           i++;
        }
    }
    while文を使用して1から10に数字をコンソールに出力するコードiが11になると、while条件式はfalseになり、whileサイクルから離れる.

    dowhile繰返し構文

    do ~ whileは上のwhile문とほぼ似ていて、
    最後にwhile条件式の前にdo~while間のblockを1回実行するのは違いがあります
    static void Main(string[] args)
    {
        int i=1;
    
        // do ~ while 루프
        do
        {
           Console.WriteLine(i);
           i++;
        } while (i < 10);
    }


    次の例では、foreachループ出力を使用してコンソールからQキーの入力を受信し、foreachループ出力の前に入力したキーを使用します.
    using System;
    using System.Collections.Generic;
    
    namespace MySystem
    {
        class Program
        {
            static void Main(string[] args)
            {
                List<char> keyList = new List<char>();
                ConsoleKeyInfo key;
                do
                {
                    key = Console.ReadKey();
                    keyList.Add(key.KeyChar);
                } while (key.Key != ConsoleKey.Q); // Q가 아니면 계속
    
                Console.WriteLine();
                foreach (char ch in keyList) // 리스트 루프
                {
                    Console.Write(ch);
                }
            }
        }
    }

    💡 注意:配置


    [例学習C#プログラミング]基礎文法-C#繰り返し