이 문서는 기계 번역을 이용하여 번역되었습니다. 문서를 영문으로 보려면 영문 확인란을 선택하세요. 마우스 포인터를 텍스트 위로 이동시켜 팝업 창에서 영문 텍스트를 표시할 수도 있습니다.
번역
영문

IEnumerable 인터페이스

 

게시 날짜: 2016년 11월

제네릭이 아닌 컬렉션에서 단순하게 반복할 수 있도록 지원하는 열거자를 노출합니다.

이 형식에 대 한.NET Framework 소스 코드를 찾아보려면 참조는 Reference Source합니다.

네임스페이스:   System.Collections
어셈블리:  mscorlib(mscorlib.dll에 있음)

[GuidAttribute("496B0ABE-CDEE-11d3-88E8-00902754C43A")]
[ComVisibleAttribute(true)]
public interface IEnumerable

이름설명
System_CAPS_pubmethodGetEnumerator()

컬렉션을 반복하는 열거자를 반환합니다.

이름설명
System_CAPS_pubmethodAsParallel()

오버로드되었습니다. 쿼리를 병렬화할 수 있도록 합니다.(ParallelEnumerable에서 정의됨)

System_CAPS_pubmethodAsQueryable()

오버로드되었습니다. 변환 된 IEnumerableIQueryable합니다.(Queryable에서 정의됨)

System_CAPS_pubmethodCast<TResult>()

요소에 캐스트는 IEnumerable 지정 된 형식입니다.(Enumerable에서 정의됨)

System_CAPS_pubmethodOfType<TResult>()

요소를 필터링 한 IEnumerable 지정된 된 형식에 기반 합니다.(Enumerable에서 정의됨)

System_CAPS_note참고

이 형식에 대 한.NET Framework 소스 코드를 보려면 참조는 Reference Source합니다. 소스 코드를 온라인, 오프 라인에서 살펴보고에 대 한 참조를 다운로드 및; 디버그 시 소스 (패치 및 업데이트 포함)를 단계별로 실행 see instructions.

IEnumerable열거할 수 있는 모든 제네릭이 아닌 컬렉션에 대 한 기본 인터페이스가입니다. 이 인터페이스의 제네릭 버전에 대 한 참조 System.Collections.Generic.IEnumerable<T>합니다. IEnumerable메서드 하나가 포함 GetEnumerator를 반환 하는 IEnumerator합니다. IEnumerator노출 하 여 컬렉션을 반복 하는 기능을 제공 된 Current 속성 및 MoveNextReset 메서드.

그러나 구현 하는 것이 좋습니다 IEnumerableIEnumerator 사용할 수 있도록 컬렉션 클래스에는 foreach (For Each Visual basic에서) 구현 구문 IEnumerable 필요 하지 않습니다. 컬렉션을 구현 하지 않는 경우 IEnumerable를 제공 하 여이 구문을 지원 하도록 반복기 패턴을 따라야 여전히는 GetEnumerator 인터페이스, 클래스 또는 구조체를 반환 하는 메서드. Visual Basic을 사용 하는 경우 제공 해야 합니다는 IEnumerator 구현에서 반환 되는 GetEnumerator합니다. C#으로 개발를 포함 하는 클래스를 제공 해야 합니다는 때를 Current 속성 및 MoveNextReset 에 설명 된 대로 메서드 IEnumerator, 클래스 구현 하지 않아도 되지만 IEnumerator합니다.

다음 코드 예제를 구현 하 여 사용자 지정 컬렉션을 반복 하는 모범 사례는 IEnumerableIEnumerator 인터페이스입니다. 이 예제에서는 이러한 인터페이스의 멤버는 명시적으로 호출 되지 않지만의 사용을 지원 하도록 구현 됩니다 foreach (For Each Visual basic에서)는 컬렉션을 반복 합니다. 이 예에서는 전체 콘솔 앱입니다. Visual Basic 응용 프로그램을 컴파일하려면 변경는 시작 개체Sub Main 프로젝트의 속성 페이지.

구현 하는 방법을 보여 주는 샘플에 대 한는 IEnumerable 인터페이스 참조 하십시오.Implementing the IEnumerable Interface in a Collection Class

using System;
using System.Collections;

// Simple business object.
public class Person
{
    public Person(string fName, string lName)
    {
        this.firstName = fName;
        this.lastName = lName;
    }

    public string firstName;
    public string lastName;
}

// Collection of Person objects. This class
// implements IEnumerable so that it can be used
// with ForEach syntax.
public class People : IEnumerable
{
    private Person[] _people;
    public People(Person[] pArray)
    {
        _people = new Person[pArray.Length];

        for (int i = 0; i < pArray.Length; i++)
        {
            _people[i] = pArray[i];
        }
    }

// Implementation for the GetEnumerator method.
    IEnumerator IEnumerable.GetEnumerator()
    {
       return (IEnumerator) GetEnumerator();
    }

    public PeopleEnum GetEnumerator()
    {
        return new PeopleEnum(_people);
    }
}

// When you implement IEnumerable, you must also implement IEnumerator.
public class PeopleEnum : IEnumerator
{
    public Person[] _people;

    // Enumerators are positioned before the first element
    // until the first MoveNext() call.
    int position = -1;

    public PeopleEnum(Person[] list)
    {
        _people = list;
    }

    public bool MoveNext()
    {
        position++;
        return (position < _people.Length);
    }

    public void Reset()
    {
        position = -1;
    }

    object IEnumerator.Current
    {
        get
        {
            return Current;
        }
    }

    public Person Current
    {
        get
        {
            try
            {
                return _people[position];
            }
            catch (IndexOutOfRangeException)
            {
                throw new InvalidOperationException();
            }
        }
    }
}

class App
{
    static void Main()
    {
        Person[] peopleArray = new Person[3]
        {
            new Person("John", "Smith"),
            new Person("Jim", "Johnson"),
            new Person("Sue", "Rabon"),
        };

        People peopleList = new People(peopleArray);
        foreach (Person p in peopleList)
            Console.WriteLine(p.firstName + " " + p.lastName);

    }
}

/* This code produces output similar to the following:
 *
 * John Smith
 * Jim Johnson
 * Sue Rabon
 *
 */

유니버설 Windows 플랫폼
8 이후 사용 가능
.NET Framework
1.1 이후 사용 가능
이식 가능한 클래스 라이브러리
이식 가능한 .NET 플랫폼 에서 지원됨
Silverlight
2.0 이후 사용 가능
Windows Phone Silverlight
7.0 이후 사용 가능
Windows Phone
8.1 이후 사용 가능
맨 위로 이동
표시: