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

C# foreach 루프 완벽 정리 – 개념, 사용법, 실전 예제

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 루프를 사용하는 것이 좋습니다.