[C#] foreach

2023. 8. 7. 21:31공부/C#

 

foreach

 

foreach 문을 사용하면 배열 또는 컬렉션을 순회하며 각 데이터 요소를 차례대로 접근할 수 있다.

foreach 문은 배열 또는 컬렉션의 끝에 도달하면 자동으로 반복이 종료된다.

 

위 이미지는 1부터 9까지의 정수를 담은 배열을 나타낸다. 

foreach문이 9(8번째)에 도달한다면 반복이 종료될 것이다.

 

 

foreach(데이터형식 변수명 in 배열or컬렉션)

ex)
int[] numberArr=new int[]{1,2,3,4,5,6,7,8,9}
foreach(int a in numberArr)

 

foreach문은 in과 함께 사용한다.

foreach문이 반복을 진행할때마다 in 키워드를 기준으로 뒤에 있는 배열(or 컬렉션)을 차례로 순환하며 앞에 있는 변수에 담아준다.

 

(위 예시로 살펴보면 foreach문은 배열 numberArr을 순환하며 변수 a에 담아주는 것을 반복한다.)

 

 

 

간단한 예제를 살펴보자.

 

 

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace Csharp_Project
{
    class ForEach
    {
        
        static int multiply(int a, int b)
        {
            return a * b;
        }

        static void Main(string[] args)
        {
            int[] numberArr = new int[] { 1, 2, 3, 4, 5, 6, 7, 8, 9 };

            foreach (int a in numberArr)
            {
                Console.WriteLine(2 + "X" + a + "=" + multiply(2, a));
            }

        }

    }
}

 

<실행 결과>

 

 

 

 

 

For문 vs Foreach문

 

 

 For문은 약간 더 나은 속도, Foreach문은 가독성이 장점이라 할 수 있다.

하지만 성능적인 면에서 그다지 큰 차이는 없다. 오히려 배열(array)의 경우,

더욱 간결하게 작성할 수 있는 Foreach문을 사용하는 것이 낫다.

 

 

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace Csharp_Project
{
    class Foreach_vs_For
    {
        static void Main(string[] args)
        {
            string[,] menu = new string[,] { { "떡볶이", "순대","튀김","치즈라면"},
            { "참치김밥", "냉모밀", "쫄면", "돈까스" }};

            Console.WriteLine("<for문 사용>");

            for(int i = 0; i < menu.GetLength(0); i++)
            {            
                for (int j = 0; j < menu.GetLength(1); j++)
                {
                    Console.Write(menu[i,j]+" ");
                }
                Console.WriteLine();
            }

            Console.WriteLine("<foreach문 사용>");

            foreach(string a in menu)
            {
                Console.WriteLine(a);
            }
        }
    }
}

 

 

<실행 결과>

 

 

 

한 문장으로 끝나는 foreach문과 달리 for문은 중첩하여 사용하고 있다. 

코드의 간결성을 원한다면 다차원 배열에서는 foreach문을 사용하는것이 좋다.