C# 인터페이스의 공동/공분산 | Liam Mooney | endjin


C#의 공변성과 반공변성은 제네릭 인터페이스 간의 암시적 참조 변환을 설명하는 개념입니다. 공변성은 인터페이스가 값만 반환할 때 발생하며, IEnumerable<T>가 그 예입니다. 여기서 T1에서 T2로의 변환이 가능하면 IEnumerable<T1>에서 IEnumerable<T2>로의 변환도 가능합니다. 반대로, 반공변성은 인터페이스가 값만 받을 때 발생하며, IComparer<T>가 그 예입니다. 이 경우 T2에서 T1로의 변환이 가능하면 IComparer<T1>에서 IComparer<T2>로의 변환이 가능합니다. 이러한 변환은 타입 안전성을 유지하면서 인터페이스의 유연성을 높입니다. 공변성과 반공변성은 인터페이스 정의에서 각각 'out’과 ‘in’ 키워드를 사용하여 명시적으로 선언됩니다.

2개의 좋아요