C#/제어문

[C#] foreach문

도도돋치 2025. 4. 15. 20:22
Contents 접기
728x90

기본 개념

foreach문은 다른 반복문처럼 몇번 반복에 초점을 두기보다는, 특정한 배열, 컬렉션 등 자료의 뭉탱이들을 기준으로 돈다.

 

쉽게 말하면, 

“이 뭉치 안에 뭐가 들었는지 하나씩 꺼내서 써보자!” 하는 문법이다.

 

foreach 문법

foreach (자료형 변수명 in 뭉탱이)
{
    // 배열 또는 컬렉션의 모든 요소에 대해 반복적으로 실행되는 코드
}
  • 자료형: 꺼내는 요소의 타입 (ex. int, string, char 등)
  • 변수명: 뭉탱이 안에서 하나씩 꺼내어 임시로 저장하는 이름
  • in: "뭉탱이 안에 있는 것들 중에서"라는 뜻
  • 뭉탱이: 배열, 리스트, 문자열 등 여러 개 모여 있는 데이터

📝 예시1: 배열돌기

string[] fruits = { "사과", "바나나", "포도" };

foreach (string fruit in fruits)
{
    Console.WriteLine(fruit);
}

🔹출력

사과  
바나나  
포도

📌 fruits라는 뭉탱이 안에서 fruit을 하나씩 꺼내서 Console.WriteLine()으로 출력


📝 예시2: 문자열(char)하나씩 돌기

string word = "Hello";

foreach (char ch in word)
{
    Console.WriteLine(ch);
}

🔹출력

H  
e  
l  
l  
o

📝 예시3: 리스트 돌기

리스트(List)는 말 그대로 "목록"인데, foreach문은 이 목록에 있는 걸 하나씩 꺼내서 사용할 수 있다.

using System;
using System.Collections.Generic;

class Program
{
    static void Main()
    {
        List<string> foods = new List<string>() { "피자", "떡볶이", "치킨" };

        foreach (string food in foods)
        {
            Console.WriteLine($"좋아하는 음식: {food}");
        }
    }
}

🔹출력

좋아하는 음식: 피자  
좋아하는 음식: 떡볶이  
좋아하는 음식: 치킨

 

📌 리스트에는 Add()로 값을 추가할 수 있다.

foods.Add("라면");

 

 왜 foreach를 쓰는 걸까?

  • 간단한 문법: 인덱스 없이도 쉽게 반복 가능(foods[0], foods[1] 이렇게 일일이 안 해도 됨)
  • 읽기 쉬움: 코드가 직관적이라 실수 줄이기 좋음
  • 안전함: 인덱스 범위 벗어나는 실수를 막을 수 있음
  • 배열, 리스트 모두 사용 가능: 다양한 컬렉션에서 활용 가능함

 

 foreach 주의점

  • 인덱스 직접 접근 불가
  • 요소 변경 불가(반복문 안에서 직접 값을 바꿀 수 없음)
  • 중간에 나가고 싶다면? break와 continue는 사용 가능함 (예외 아님!) 

 

📖 정리

foreach란? 뭉탱이 데이터 안에서 하나씩 꺼내 반복하는 문법
주요 장점 인덱스 없이도 반복, 문법이 간단하고 실수 줄이기 좋음
주의할 점 인덱스 접근 ❌, 요소 변경 ❌, 읽기 전용으로 반복 
사용 대상 배열, 리스트, 문자열 등 대부분의 컬렉션

 

728x90

'C# > 제어문' 카테고리의 다른 글

[C#] 예외처리 throw  (0) 2025.03.24
[C#] 예외처리 try-catch-finally  (0) 2025.03.24
[C#] 분기문 return  (0) 2025.03.24
[C#] 분기문 continue  (0) 2025.03.24
[C#] 분기문 break  (0) 2025.03.24