Computer >> 컴퓨터 >  >> 프로그래밍 >> C#

C++와 C#의 Foreach 루프 완벽 정리: 개념부터 예제까지

Foreach(포이치) 루프는 배열이나 컬렉션의 모든 요소를 인덱스 관리 없이 간결하게 순회할 수 있도록 해주는 반복문입니다. C++와 C# 모두 foreach 스타일의 문법을 지원하며, 이를 활용하면 코드의 가독성과 안정성을 크게 높일 수 있습니다. 이번 글에서는 두 언어에서 foreach를 사용하는 방법을 예제 코드와 함께 자세히 살펴보겠습니다.


C++에서의 Foreach

C++11부터 범위 기반 for 루프(range-based for loop)가 도입되면서 foreach와 동일한 방식으로 각 요소를 손쉽게 순회할 수 있게 되었습니다. 다음 예제를 통해 기본 사용법을 확인해 보겠습니다.

예제

#include <iostream>
using namespace std;

int main() {
    int myArr[] = { 99, 15, 67 };

    // foreach 루프
    for (int ele : myArr)
    cout << ele << endl;
}

실행 결과

99
15
67

위 코드에서 for (int ele : myArr) 구문은 배열 myArr의 요소를 처음부터 끝까지 하나씩 변수 ele에 대입하며 반복합니다. 별도의 인덱스 변수나 종료 조건이 필요 없기 때문에 전통적인 for 루프보다 훨씬 간결하고 실수를 줄일 수 있습니다.

C#에서의 Foreach

C#은 전용 foreach 키워드를 제공하여 컬렉션의 항목을 순서대로 순회할 수 있습니다. 아래 예제는 길이가 10인 정수 배열을 생성하고, foreach 루프를 사용해 각 요소의 값과 인덱스를 출력하는 코드입니다.

예제

using System;

namespace ArrayApplication {
    class MyArray {
        static void Main(string[] args) {
            int [] n = new int[10]; /* n은 10개의 정수로 이루어진 배열 */

            for ( int i = 0; i < 10; i++ ) {
                n[i] = i + 100;
            }
            /* 배열의 각 요소 값 출력 */
            foreach (int j in n ) {
                int i = j-100;
                Console.WriteLine("Element[{0}] = {1}", i, j);
            }
            Console.ReadKey();
        }
    }
}

실행 결과

Element[0] = 100
Element[1] = 101
Element[2] = 102
Element[3] = 103
Element[4] = 104
Element[5] = 105
Element[6] = 106
Element[7] = 107
Element[8] = 108
Element[9] = 109

예제에서 먼저 일반적인 for 루프로 배열에 값을 채운 뒤, foreach (int j in n) 구문을 통해 배열의 모든 요소를 차례대로 읽어 출력했습니다. 이처럼 C#의 foreach는 배열뿐 아니라 List, Dictionary 등 다양한 컬렉션에도 그대로 적용할 수 있습니다.

Foreach 루프의 주요 장점

  • 인덱스 오류 방지: 범위를 벗어나는 접근 실수를 사전에 줄일 수 있습니다.
  • 가독성 향상: 반복 로직이 단순해져 코드를 이해하기 쉽습니다.
  • 다양한 컬렉션 지원: 배열뿐 아니라 리스트, 딕셔너리 등 여러 자료구조에 활용 가능합니다.

마무리

C++의 범위 기반 for 루프와 C#의 foreach 키워드는 목적이 같지만 문법이 조금씩 다릅니다. 두 언어 모두 단순히 컬렉션을 순회하는 작업이라면 foreach 스타일의 반복문을 사용하는 것이 코드를 더 깔끔하고 안전하게 만들어 줍니다. 상황에 맞게 적절히 활용해 보시기 바랍니다.