C#에서 foreach 루프는 System.Collections.IEnumerable 또는 System.Collections.Generic.IEnumerable<T> 인터페이스를 구현하는 타입의 인스턴스에 포함된 각 요소를 순회하며 문장 또는 문장 블록을 반복 실행하는 반복문입니다.
foreach 루프란?
foreach 루프는 배열, 리스트, 링크드 리스트 등 컬렉션의 모든 요소를 인덱스 없이 간결하게 순회할 수 있도록 해줍니다. 일반적인 for 루프와 달리 반복 횟수를 직접 관리할 필요가 없어 코드가 더 읽기 쉽고 오류 발생 가능성도 줄어듭니다.
예제 코드
다음은 LinkedList 컬렉션을 foreach 루프로 순회하는 예제입니다.
using System;
using System.Collections.Generic;
public class Demo {
public static void Main() {
LinkedList<int> linkedList = new LinkedList<int>();
linkedList.AddLast(25);
linkedList.AddLast(50);
linkedList.AddLast(100);
linkedList.AddLast(200);
linkedList.AddLast(400);
linkedList.AddLast(500);
linkedList.AddLast(550);
linkedList.AddLast(600);
linkedList.AddLast(800);
linkedList.AddLast(1200);
Console.WriteLine("노드 개수 = " + linkedList.Count);
foreach(int val in linkedList) {
Console.WriteLine(val);
}
Console.WriteLine("LinkedList에 노드 800이 존재하는가? " + linkedList.Contains(800));
}
}실행 결과
위 코드를 실행하면 다음과 같은 출력 결과를 확인할 수 있습니다.
노드 개수 = 10 25 50 100 200 400 500 550 600 800 1200 LinkedList에 노드 800이 존재하는가? True
핵심 포인트
- 간결성: 인덱스 관리 없이 컬렉션 전체를 손쉽게 순회할 수 있습니다.
- 안전성: 범위를 벗어나는 인덱스 오류(IndexOutOfRangeException)를 방지할 수 있습니다.
- 호환성: IEnumerable 또는 IEnumerable<T>를 구현하는 모든 컬렉션 타입에서 사용 가능합니다.
- 제약 사항: foreach 루프 내부에서는 컬렉션 요소를 수정할 수 없으므로, 요소 변경이 필요한 경우 for 루프를 사용하는 것이 좋습니다.