프로그래밍/C#

for 와 foreach 비교

selinatsu 2024. 10. 3. 11:55
반응형

둘 다 데이타를 반복 처리를 하는 점에서는 비슷하지만, 다루는 방식에서 몇 가지 차이가 있다.

 

차이점

1. for 는 루프 중에 각 요소를 수정할 수 있는 반면, foreach 는 읽기 전용이다.

2. for 는 증감을 제어할 수 있지만, foreach 는 처음부터 끝까지 순회한다.

3. foreach 는 IEnumerable 를 구현한 컬렉션에서만 사용 가능하다.

 - 배열 [], List<T>, Dictionary <TKey, TValue>, yield return 을 사용하는 이터레이터 메서드 등을 포함한다.

4. foreach 는 인덱스를 다루지 않기 때문에 코드가 더 간결하다.

 

결론적으로

for 문은 인덱스 제어가 필요하거나 반복 범위를 직접 조절하고 싶을 때 적합하다.

foreach 문은 컬렉션의 요소를 간단하게 탐색하고, 수정할 필요가 없을 때 더 간결하고 직관적이다.

 

두 문법 모두 상황에 맞게 사용하면 되며, 일반적으로 요소를 단순히 순회할 때는 foreach가 더 편리하며, 인덱스나 수정이 필요할 때는 for 문을 사용하는 것이 좋다.

 


 

부가 설명1

foreach 문법 기본 구조

foreach (데이터_타입 변수명 in 컬렉션)
{
    // 반복할 코드
}

 

데이터_타입 : 컬렉션의 각 요소의 타입입니다. 예를 들어, int[] 배열이면 int 타입이 됩니다.

변수명 : 각 반복 시 컬렉션의 요소가 담길 변수입니다. 이 변수를 이용해 요소에 접근합니다.

컬렉션 : 배열, 리스트, 딕셔너리 등 반복 가능한 객체입니다.

 

 

foreach의 작동 방식

첫 번째 요소부터 마지막 요소까지 하나씩 순차적으로 반복합니다.

각 요소는 자동으로 변수에 저장되고, 그 변수를 이용해 요소에 접근하거나 처리할 수 있습니다.

 

int[] numbers = { 1, 2, 3, 4, 5 };

// foreach로 배열의 각 요소 출력
foreach (int number in numbers)
{
    Console.WriteLine(number);
}

 

부가 설명2

foreach 문은 내부적으로 IEnumerator를 사용하여 컬렉션을 반복합니다.

foreach 문을 직접 사용하는 경우 MoveNext()와 Current를 명시적으로 호출하지 않아도 되며, 더 간단하게 사용할 수 있습니다.


class Program
{
    static void Main()
    {
        // 배열을 예시로 사용
        int[] numbers = { 1, 2, 3, 4, 5 };
        
        // 배열에 대한 IEnumerator 가져오기
        IEnumerator enumerator = numbers.GetEnumerator();
        
        // 요소를 순차적으로 접근하기 위한 반복
        while (enumerator.MoveNext())
        {
            // 현재 요소를 가져옴
            int number = (int)enumerator.Current;
            Console.WriteLine(number);
        }
    }
}

 

 

 

반응형

'프로그래밍 > C#' 카테고리의 다른 글

yield return  (0) 2024.10.04
배열 초기화  (0) 2024.10.04
배열[], ArrayList, List<T> 의 각 기능과 차이점  (2) 2024.10.03
int 와 Int32  (0) 2024.10.02
Property (프로퍼티)  (0) 2024.09.18