Computer >> 컴퓨터 >  >> 프로그래밍 >> C#

C# 인터페이스 유형 완벽 정리: IEnumerable부터 IDictionary까지

C# 인터페이스란?

인터페이스(Interface)는 속성(Property), 메서드(Method), 이벤트(Event)를 정의하며, 이 요소들이 곧 인터페이스의 멤버가 됩니다. 인터페이스에는 멤버에 대한 선언만 포함되고, 실제 구현은 해당 인터페이스를 상속받는 클래스에서 이루어진다는 점이 핵심 특징입니다.

C#의 주요 인터페이스 유형

  • IEnumerable − 모든 제네릭 컬렉션의 기본이 되는 인터페이스입니다.

  • IList − 배열(Array)과 List 타입이 구현하는 제네릭 인터페이스로, 인덱스 기반 접근을 지원합니다.

  • IDictionary − 키(Key)와 값(Value) 쌍으로 데이터를 저장하는 딕셔너리 컬렉션 인터페이스입니다.

IEnumerable 인터페이스의 동작 원리

IEnumerable은 GetEnumerator라는 단일 메서드를 정의하는 인터페이스로, 이 메서드는 IEnumerator 인터페이스를 반환합니다. IEnumerable을 구현한 컬렉션은 foreach 문과 함께 사용할 수 있으며, 컬렉션에 대한 읽기 전용(read-only) 접근을 제공합니다.

다음은 IEnumerable 인터페이스를 구현하는 방법을 보여주는 예제입니다.

예제

class Demo : IEnumerable, IEnumerator {
    // IEnumerable 메서드 GetEnumerator()
    IEnumerator IEnumerable.GetEnumerator() {
        throw new NotImplementedException();
    }
    public object Current {
        get { throw new NotImplementedException(); }
    }
    // IEnumerator 메서드
    public bool MoveNext() {
        throw new NotImplementedException();
    }
    // IEnumerator 메서드
    public void Reset() {
        throw new NotImplementedException();
    }
}

위 코드에서 확인할 수 있듯이, IEnumerable을 구현하면 IEnumerator의 두 메서드도 함께 구현해야 합니다.

// IEnumerator 메서드
public bool MoveNext() {
    throw new NotImplementedException();
}
// IEnumerator 메서드
public void Reset() {
    throw new NotImplementedException();
}

IEnumerator의 핵심 메서드

  • MoveNext() − 열거자(Enumerator)를 컬렉션의 다음 요소로 이동시킵니다. 다음 요소가 존재하면 true, 더 이상 없으면 false를 반환합니다.

  • Reset() − 열거자를 초기 위치, 즉 컬렉션의 첫 번째 요소 앞으로 되돌립니다.

이처럼 IEnumerable과 IEnumerator는 C#에서 컬렉션을 일관된 방식으로 순회할 수 있게 해주는 기반 인터페이스이며, foreach 문의 내부 동작도 바로 이 두 인터페이스를 통해 구현됩니다.