X가 Y가 될 수 있다면, F(X)도 F(Y)가 될 수 있다 > 공변성
X가 Y가 될 수 있다면, F(Y)가 F(X)가 될 수 있다 > 반공변성
이다.
인터페이스, 델리게이트에만 달 수 있는 제약조건임
https://edykim.com/ko/post/what-are-covariance-and-contravariance/
공변성과 반공변성은 무엇인가?
Stephan Boyer의 What are covariance and contravariance?을 번역한 글이다. 공변성과 반공변성은 무엇인가? 서브타이핑은 프로그래밍 언어 이론에서 까다로운 주제다. 공변성과 반공변성은 오해하기 쉬운 주
edykim.com
위는 이해할 때 도움이 된 글임
요약하면,
1. 함수 타입에서 반환 타입은 공변적(covariant) 이고, 인자 타입은 반공변적(contravariant) 이다.
2. 컬렉션이 불변이면 공변적(covariant) 이다.
그러니까 이 경우엔 너도 지원해라 이거인 듯







'C#' 카테고리의 다른 글
[C#] ThreadLocalStorage? (0) | 2023.04.06 |
---|---|
[C#] ReadWriteLock 구현 (0) | 2023.04.05 |
[C#] SpinLock 구현 (0) | 2023.03.29 |
[C#] IComparable과 IComparer (0) | 2023.03.26 |
[C#] Dispose 패턴 (0) | 2023.03.23 |