언어/C#

IEnumerable<out T>

에린_1 2024. 8. 8. 09:48
728x90

IEnumerable<out T>

  • C#에서 제네릭 인터페이스 IEnumeable<T>를 나타내며, 제네릭 타입 매개변수 T가 공변성(Covariance)을 가지는 것을 의미한다.
  • 공변성은 타입 계층에서 파생된 타입을 사용할 수 있게 해주는 기능으로, 이는 특히 인터페이스나 델리게이트에서 유용하게 쓰인다.

IEnumerable<T> 인터페이스

  • 컬렉션을 반복(iterate)할 수 있는 기능을 제공하는 제네릭 인터페이스이다.
  • System.Collections.Generic 네임스페이스에 속하며, 다음과 같은 기본 멤버를 포함한다.
    • IEnumerator<T> GetEnumerator();
  • 이 인터페이스는 컬렉션의 요소에 대해 순차적으로 접근할 수 있는 기능을 제공한다. 예를 들어, foreach 문에서 IEnumerable<T>를 사용하여 컬렉션의 모든 요소를 열거할 수 있다.

공변성(Covariance)

  • <out T>에서 out 키워드는 공변성을 나타낸다. IEnumerable<Base>가 IEnumerable<Derived>로 대체될 수 있다는 것을 의미한다.
    • 여기서 Derived는 Base의 파생 클래스이다.

out 키워드의 역할

  • 제네릭 인터페이스나 델리게이트에서 out 키워드는 해당 타입 매개변수가 반환 타입으로만 사용 될 수 있음을 명시한다. 이는 다음과 같은 제약을 의미한다.
    • T는 반환할 수는 있지만, T를 소비(즉, 메서드의 매개변수로 사용)할 수는 없다.
  • 즉, IEnumerable<T>의 경우 T 타입의 요소를 열거할 수는 있지만, T 타입의 요소를 추가하거나 수정할 수 없다.
728x90

'언어 > C#' 카테고리의 다른 글

System.Data.SqlClient  (0) 2024.08.08
LINQ Count 메서드  (0) 2024.08.08
튜플(Tuple)  (0) 2024.08.08
System.Data.SqlClient.SqlException (0x80131904)  (0) 2024.08.08
System.Data.SqlClient.SqlConnection.OnError  (0) 2024.08.08