[c#] C# 이터레이터와 IEnumerable 인터페이스
C#에서 이터레이터(iterator) 및 IEnumerable<T>
인터페이스는 컬렉션을 효과적으로 조작하고 반복하는 데 사용됩니다. 이는 코드를 보다 간결하게 만들어주며, 메모리를 절약할 수 있습니다.
이터레이터(iterator)
C#의 이터레이터는 yield
키워드를 사용하여 반복 가능한 시퀀스를 만들 수 있습니다. 아래는 이터레이터를 사용한 간단한 예제입니다.
public IEnumerable<int> GetNumbers()
{
yield return 1;
yield return 2;
yield return 3;
}
위 코드는 GetNumbers
메서드가 IEnumerable<int>
를 반환하는데, 실제로는 반복 가능한 시퀀스를 생성합니다.
IEnumerable 인터페이스
IEnumerable<T>
인터페이스는 단순한 반복에 사용될 뿐만 아니라 LINQ 쿼리와 함께 사용되어 컬렉션을 처리하는 데 유용합니다. IEnumerable<T>
를 구현하는 클래스는 foreach
루프 및 LINQ 쿼리에서 사용될 수 있습니다.
public class MyCollection : IEnumerable<int>
{
private List<int> numbers = new List<int>();
public void AddNumber(int number)
{
numbers.Add(number);
}
public IEnumerator<int> GetEnumerator()
{
foreach (int number in numbers)
{
yield return number;
}
}
IEnumerator IEnumerable.GetEnumerator()
{
return GetEnumerator();
}
}
위 예제에서 MyCollection
클래스가 IEnumerable<int>
를 구현했으며, GetEnumerator
메서드를 사용하여 yield
를 통해 반복 가능한 시퀀스를 생성합니다.
이러한 기능들을 통해 C#에서 컬렉션을 효율적으로 다룰 수 있으며, 코드를 보다 간결하게 만들 수 있습니다.
참고 자료
- C# Iterators (C# Programming Guide)
- [IEnumerable
Interface](https://docs.microsoft.com/en-us/dotnet/api/system.collections.generic.ienumerable-1?view=net-6.0)
이제 C#에서 이터레이터와 IEnumerable<T>
인터페이스가 어떻게 사용되는지에 대해 조금 더 이해하셨을 것입니다. 만약 궁금한 점이 있거나 다른 질문이 있다면 언제든지 알려주세요!