C#에서 List<T>의 각 요소에 대해 지정된 작업을 수행하려면 ForEach() 메서드를 사용할 수 있습니다. 이 메서드는 리스트의 모든 요소를 순회하면서, 매개변수로 전달된 대리자(delegate)에 정의된 동작을 각 요소에 차례대로 적용합니다.
ForEach 메서드의 동작 원리
List<T> 클래스의 ForEach 메서드는 Action<T> 대리자를 인수로 받습니다. 리스트에 포함된 각 요소가 이 대리자에 순서대로 전달되며, 대리자 내부에 작성한 로직이 요소마다 실행됩니다.
예제 1: 각 요소에 10 곱하기
다음은 리스트의 각 요소에 10을 곱한 결과를 출력하는 예제입니다.
using System;
using System.Collections.Generic;
public class Demo {
public static void demo(int s){
s = s * 10;
Console.WriteLine(s);
}
public static void Main(String[] args){
List<int> list = new List<int>();
list.Add(25);
list.Add(50);
list.Add(75);
list.Add(100);
list.Add(200);
list.Add(250);
list.Add(275);
list.Add(300);
Console.WriteLine("List...");
foreach (int i in list){
Console.WriteLine(i);
}
Console.WriteLine("\nUpdated List...");
list.ForEach(demo);
}
}실행 결과
위 코드를 실행하면 다음과 같은 결과가 출력됩니다.
List... 25 50 75 100 200 250 275 300 Updated List... 250 500 750 1000 2000 2500 2750 3000
예제 2: 각 요소에서 50 빼기
이번에는 각 요소에서 50을 뺀 값을 출력하는 예제를 살펴보겠습니다.
using System;
using System.Collections.Generic;
public class Demo {
public static void demo(int s){
s = s - 50;
Console.WriteLine(s);
}
public static void Main(String[] args){
List<int> list = new List<int>();
list.Add(25);
list.Add(50);
list.Add(75);
list.Add(100);
list.Add(200);
list.Add(250);
list.Add(275);
list.Add(300);
Console.WriteLine("List...");
foreach (int i in list){
Console.WriteLine(i);
}
Console.WriteLine("\nUpdated List...");
list.ForEach(demo);
}
}실행 결과
위 코드를 실행하면 다음과 같은 결과가 출력됩니다.
List... 25 50 75 100 200 250 275 300 Updated List... -25 0 25 50 150 200 225 250
참고: 람다 식으로 더 간결하게 작성하기
별도의 메서드를 정의하지 않고 람다 식(lambda expression)을 사용하면 코드를 훨씬 간결하게 만들 수 있습니다.
// 각 요소에 10을 곱해 출력 list.ForEach(s => Console.WriteLine(s * 10)); // 각 요소에서 50을 빼서 출력 list.ForEach(s => Console.WriteLine(s - 50));
이처럼 ForEach 메서드를 활용하면 반복문을 직접 작성하는 것보다 의도가 명확하고 가독성 좋은 코드를 작성할 수 있습니다.