[C#]Foreach 루프: 리스트와 배열 요소 처리 방법
안녕하세요 여러분! 오늘은 C#에서 다양한 컬렉션 요소를 효율적으로 다루는 기법인 foreach 루프에 대해 설명하려 합니다. 이 루프는 컬렉션, 배열 등의 반복 가능한 객체에서 요소를 차례대로 처리할 때 사용됩니다. 간결하게 작성되어 프로그램의 가독성과 유지 보수성을 높여줍니다.
1. 기본 구조와 사용법
foreach 루프는 다음의 구조를 따릅니다.
foreach (variable_type variable_name in enumerable_collection)
{
// 코드 블록
}
간단한 예제를 통해 배운 내용을 활용해 보겠습니다.
string[] fruits = { "apple", "banana", "cherry" };
foreach (string fruit in fruits)
{
Console.WriteLine(fruit);
}
위 코드에서 일반배열인 fruits라는 문자열 배열을 생성한 후, foreach 문을 사용해 배열의 모든 요소를 출력합니다. 여기서 fruit 변수는 각 반복 시 배열의 현재 요소를 담게 됩니다.
2. Foreach와 컬렉션
foreach는 컬렉션 클래스와 함께 사용되는 경우에도 효율적입니다. 예를 들어 다음과 같 List<> 클래스와 함께 사용할 수 있습니다
List<string> pets = new List<string> { "cat", "dog", "hamster" };
foreach (string pet in pets)
{
Console.WriteLine(pet);
}
이 말은 다른 컬렉션 클래스와 함께 사용할 수 있다 것을 의미하는데, 예를 들어 Dictionary 클래스와 같이 사용하여 키와 값을 쉽게 출력할 수 있습니다.
Dictionary<string, string> weekdays = new Dictionary<string, string>()
{
{ "Mon", "Monday" },
{ "Tue", "Tuesday" },
{ "Wed", "Wednesday" },
};
foreach (KeyValuePair<string, string> entry in weekdays)
{
Console.WriteLine($"{entry.Key}: {entry.Value}");
}
3. 커스텀 클래스와 함께 사용하기
foreach 루프를 사용하려면 커스텀 클래스가 IEnumerable 인터페이스를 구현해야 합니다. 이 인터페이스는 컬렉션을 순회하는 데 필요한 기능을 제공합니다. 다음은 간단한 예시입니다.
class Cars : IEnumerable
{
string[] carBrands = { "Toyota", "Honda", "Hyundai" };
public IEnumerator GetEnumerator()
{
return new CarsEnumerator(carBrands);
}
}
위 코드에서 Cars 클래스는 IEnumerable 인터페이스를 구현하고 GetEnumerator() 메서드를 정의합니다. 이 메서드는 반드시 IEnumerator 타입의 객체를 반환해야 합니다. 이 때 IEnumerator에 필요한 메서드와 속성을 구현한 다른 클래스를 생성해 줍니다.
class CarsEnumerator : IEnumerator
{
string[] carBrands;
int position = -1;
public CarsEnumerator(string[] carBrands)
{
this.carBrands = carBrands;
}
public object Current
{
get { return carBrands[position]; }
}
public bool MoveNext()
{
position++;
return (position < carBrands.Length);
}
public void Reset()
{
position = -1;
}
}
이제 사용자 정의 클래스와 함께 foreach를 사용할 수 있습니다.
class Program
{
static void Main(string[] args)
{
Cars cars = new Cars();
foreach (string carBrand in cars)
{
Console.WriteLine(carBrand);
}
}
}
이렇게 foreach 루프를 활용하면 다양한 요소를 더욱 간결하고 효율적으로 처리할 수 있습니다. 여러분의 프로젝트에서 적절하게 활용하여 보다 나은 코드를 작성하시기 바랍니다. 행운을 빕니다!