foreach (element in iterableItem) {
// foreach 루프 본문
}
iterableItem은 배열, 리스트, 또는 IEnumerable 구현 타입이 될 수 있습니다.
foreach 루프 동작 원리
in 키워드는 매 반복마다 iterableItem에서 각 항목 선택하여 element 변수에 할당. 루프는 요소당 한 번 실행되므로 반복 횟수 = 컬렉션 항목 수.
예제 1: for 루프로 배열 출력
using System;
namespace Loop {
class ForLoop {
public static void Main(string[] args) {
char[] myArray = {'H','e','l','l','o'};
for (int i = 0; i < myArray.Length; i++) {
Console.WriteLine(myArray[i]);
}
}
}
}
예제 2: foreach 루프로 배열 출력
using System;
namespace Loop {
class ForEachLoop {
public static void Main(string[] args) {
char[] myArray = {'H','e','l','l','o'};
foreach (char ch in myArray) {
Console.WriteLine(ch);
}
}
}
}
두 프로그램 모두 출력:
H
e
l
l
o
foreach 버전이 더 짧고, 인덱스 계산 불필요, 오프바원 오류 위험 감소.
예제 3: 성별 배열에서 남/여 카운트
배열에서 'm'과 'f' 출현 횟수 세기.
using System;
namespace Loop {
class GenderCount {
public static void Main(string[] args) {
char[] gender = {'m','f','m','m','m','f','f','m','m','f'};
int male = 0, female = 0;
foreach (char g in gender) {
if (g == 'm') male++;
else if (g == 'f') female++;
}
Console.WriteLine("Number of male = {0}", male);
Console.WriteLine("Number of female = {0}", female);
}
}
}
출력:
Number of male = 6
Number of female = 4
예제 4: foreach로 리스트 합계 구하기
List<int> 사용으로 foreach가 제네릭 컬렉션과도 원활히 작동함을 시연.
using System;
using System.Collections.Generic;
namespace Loop {
class SumList {
public static void Main(string[] args) {
var numbers = new List<int>() { 5, -8, 3, 14, 9, 17, 0, 4 };
int sum = 0;
foreach (int number in numbers) {
sum += number;
}
Console.WriteLine("Sum = {0}", sum);
Console.ReadLine();
}
}
}
결과:
Sum = 44
배열과 컬렉션 모두에서 foreach는 더 깔끔하고 유지보수하기 쉬운 코드 제공. 인덱스 직접 조작 필요 없을 때 선호.