C# Language
IEnumerable
수색…
소개
IEnumerable
은 열거 할 수있는 ArrayList와 같은 모든 비 제네릭 컬렉션의 기본 인터페이스입니다. IEnumerator<T>
는 List <>와 같은 모든 일반 열거 자의 기본 인터페이스입니다.
IEnumerable
은 GetEnumerator
메서드를 구현하는 인터페이스입니다. GetEnumerator
메서드는 foreach와 같은 컬렉션을 반복하는 옵션을 제공하는 IEnumerator
를 반환합니다.
비고
IEnumerable은 열거 할 수있는 모든 비 제네릭 컬렉션에 대한 기본 인터페이스입니다.
IEnumerable
가장 기본적인 형식에서 IEnumerable을 구현하는 객체는 일련의 객체를 나타냅니다. 해당 개체는 c # foreach
키워드를 사용하여 반복 할 수 있습니다.
아래 예제에서 sequenceOfNumbers
객체는 IEnumerable을 구현합니다. 일련의 정수를 나타냅니다. foreach
루프는 각각을 차례로 반복합니다.
int AddNumbers(IEnumerable<int> sequenceOfNumbers) {
int returnValue = 0;
foreach(int i in sequenceOfNumbers) {
returnValue += i;
}
return returnValue;
}
사용자 지정 열거자를 사용하는 IEnumerable
IEnumerable 인터페이스를 구현하면 클래스를 BCL 컬렉션과 동일한 방식으로 열거 할 수 있습니다. 이렇게하려면 열거 형 상태를 추적하는 열거 자 클래스를 확장해야합니다.
표준 컬렉션을 반복하는 것 외에도 다음과 같은 예가 있습니다.
- 개체 모음이 아닌 함수를 기반으로 숫자 범위 사용
- 그래프 컬렉션의 DFS 또는 BFS와 같은 컬렉션에 대해 다른 반복 알고리즘 구현
public static void Main(string[] args) {
foreach (var coffee in new CoffeeCollection()) {
Console.WriteLine(coffee);
}
}
public class CoffeeCollection : IEnumerable {
private CoffeeEnumerator enumerator;
public CoffeeCollection() {
enumerator = new CoffeeEnumerator();
}
public IEnumerator GetEnumerator() {
return enumerator;
}
public class CoffeeEnumerator : IEnumerator {
string[] beverages = new string[3] { "espresso", "macchiato", "latte" };
int currentIndex = -1;
public object Current {
get {
return beverages[currentIndex];
}
}
public bool MoveNext() {
currentIndex++;
if (currentIndex < beverages.Length) {
return true;
}
return false;
}
public void Reset() {
currentIndex = 0;
}
}
}
Modified text is an extract of the original Stack Overflow Documentation
아래 라이선스 CC BY-SA 3.0
와 제휴하지 않음 Stack Overflow