Notice
Link
반응형
«   2025/08   »
1 2
3 4 5 6 7 8 9
10 11 12 13 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28 29 30
31
Archives
관리 메뉴

MyCodeStory

[C#] foreach 문 본문

언어/C# .NET

[C#] foreach 문

Code0Kim 2025. 3. 29. 17:20
반응형

 

C#에서 foreach 문은 컬렉션(배열, 리스트 등)에 저장된 요소를 순차적으로 반복하여 처리할 때 사용됩니다.


특히, for 문이나 while 문과 다르게 인덱스를 직접 다룰 필요 없이 간결하게 사용할 수 있다는 장점이 있습니다.
아래는 foreach 문을 사용하는 방법을 설명하고, 다양한 예제 코드 입니다

 

1. foreach 문 기본 구조

C#의 foreach 문은 다음과 같은 구조를 가집니다.

foreach (var item in collection)
{
    // item을 사용한 코드 실행
}
 

여기서 collection은 배열(Array) 또는 리스트(List) 등의 컬렉션이며, item은 컬렉션 내의 각 요소를 순차적으로 받아오는 변수입니다.


2. 배열(Array)에서 foreach 문 사용 예제

배열은 고정된 크기의 데이터 모음이며, foreach 문을 사용하면 모든 요소를 순서대로 접근할 수 있습니다.

using System;

class Program
{
    static void Main()
    {
        // 정수형 배열을 선언하고 초기화
        int[] numbers = { 10, 20, 30, 40, 50 };

        // foreach 문을 사용하여 배열의 모든 요소 출력
        foreach (int num in numbers)
        {
            Console.WriteLine("현재 숫자는: " + num);
        }
    }
}

위 코드에서는 numbers 배열에 저장된 5개의 정수 값을 foreach 문을 이용하여 하나씩 가져와 Console.WriteLine을 통해 출력합니다.


3. 리스트(List)에서 foreach 문 사용 예제

C#에서 List<T>는 동적으로 크기가 변하는 자료구조이며, foreach 문을 활용하면 편리하게 요소를 순회할 수 있습니다.

using System;
using System.Collections.Generic;

class Program
{
    static void Main()
    {
        // 문자열 리스트 선언 및 초기화
        List<string> fruits = new List<string> { "사과", "바나나", "체리", "포도", "망고" };

        // foreach 문을 사용하여 리스트의 모든 요소 출력
        foreach (string fruit in fruits)
        {
            Console.WriteLine("맛있는 과일: " + fruit);
        }
    }
}

위 코드에서는 List<string>을 사용하여 과일 이름을 저장하고, foreach 문을 이용하여 하나씩 출력하고 있습니다.


4. Dictionary에서 foreach 문 사용 예제

Dictionary<TKey, TValue>는 키-값(Key-Value) 쌍을 저장하는 컬렉션이며, foreach 문을 사용하여 데이터를 쉽게 조회할 수 있습니다.

using System;
using System.Collections.Generic;

class Program
{
    static void Main()
    {
        // Dictionary 선언 및 초기화
        Dictionary<string, int> studentScores = new Dictionary<string, int>
        {
            { "Alice", 90 },
            { "Bob", 85 },
            { "Charlie", 88 },
            { "David", 92 }
        };

        // foreach 문을 사용하여 Dictionary의 모든 키-값 쌍 출력
        foreach (KeyValuePair<string, int> student in studentScores)
        {
            Console.WriteLine("학생: " + student.Key + ", 점수: " + student.Value);
        }
    }
}

위 코드에서는 Dictionary<string, int> 자료형을 사용하여 학생 이름과 점수를 저장한 뒤,
foreach 문을 사용하여 각 학생의 이름과 점수를 출력하는 예제입니다.


5. foreach 문과 break, continue 사용 예제

foreach 문에서도 break와 continue 키워드를 사용할 수 있으며, 특정 조건을 만족할 때 반복을 중단하거나 건너뛸 수 있습니다.

using System;
using System.Collections.Generic;

class Program
{
    static void Main()
    {
        // 정수 리스트 선언 및 초기화
        List<int> numbers = new List<int> { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 };

        Console.WriteLine("짝수만 출력:");

        // foreach 문을 사용하여 짝수만 출력 (홀수는 continue로 건너뜀)
        foreach (int num in numbers)
        {
            if (num % 2 != 0)
                continue; // 홀수는 출력하지 않고 다음 반복으로 이동
            
            Console.WriteLine("현재 숫자: " + num);
        }

        Console.WriteLine("\n숫자 6을 만나면 반복 종료:");

        // foreach 문을 사용하여 특정 숫자(6)를 만나면 break로 반복 종료
        foreach (int num in numbers)
        {
            if (num == 6)
                break; // 6을 만나면 반복문 종료
            
            Console.WriteLine("현재 숫자: " + num);
        }
    }
}

위 코드에서는 continue 키워드를 사용하여 홀수를 건너뛰고 짝수만 출력하며,
break 키워드를 사용하여 숫자 6을 만나면 반복을 종료하는 예제를 보여줍니다.


6. foreach 문에서 요소 수정 불가능한 이유

foreach 문을 사용할 때 컬렉션의 요소를 직접 수정하려 하면 오류가 발생합니다.
이는 foreach 문이 Read-Only 방식으로 작동하기 때문입니다.

using System;
using System.Collections.Generic;

class Program
{
    static void Main()
    {
        List<int> numbers = new List<int> { 1, 2, 3, 4, 5 };

        foreach (int num in numbers)
        {
            // num += 10;  // 오류 발생: foreach의 요소는 수정 불가능
            Console.WriteLine("현재 숫자: " + num);
        }
    }
}

요소를 변경하려면 for 문을 사용하거나 List<T>의 Select 또는 ForEach 메서드를 활용해야 합니다.


7. foreach 문과 LINQ 활용

C#의 LINQ와 함께 사용하면 더욱 간결한 코드로 컬렉션을 조작할 수 있습니다.

using System;
using System.Collections.Generic;
using System.Linq;

class Program
{
    static void Main()
    {
        List<int> numbers = new List<int> { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 };

        // LINQ를 사용하여 짝수만 필터링한 후 foreach로 출력
        foreach (int num in numbers.Where(n => n % 2 == 0))
        {
            Console.WriteLine("현재 짝수: " + num);
        }
    }
}

위 코드에서는 LINQ의 Where 메서드를 사용하여 짝수만 필터링한 후 foreach 문을 활용하여 출력하고 있습니다.

반응형

'언어 > C# .NET' 카테고리의 다른 글

[C#] delegate vs event  (0) 2025.04.03
[C#] Delegate event  (0) 2025.04.03
[C#] for문과 while문의 차이점  (0) 2025.03.29
[C#] Type Conversion 형 변환  (0) 2025.03.28
[C#] While 문  (0) 2025.03.28