본문 바로가기
반응형

반공변성2

C# 공변성(Covariance)이란 무엇인가? 공변성 공변성은 대리자에서 정의하고 있는 반환 형식보다 하위의 상속 형식(서브 형식, 더 많이 상속된 형식) 반환을 허용한다. Covariance 프로젝트에서 대리자의 공변성 예제를 살펴보자. public partial class Program { private delegate TextWriter CovarianceDelegate(); } 이 대리자는 TextWriter 형식을 반환한다. 다음으로 StreamWriterMethod()를 만들 텐데, 이 메서드는 StreamWriter 개체를 반환한다. public partial class Program { private static StreamWriter StreamWriterMethod() { DirectoryInfo[] arrDirs = new Dir.. 2024. 3. 26.
Effective C# Item 22 : 공변성과 반공변성을 지원하라 공변성(Convariance)과 반공변성(Contravariance)을 지원하라 타입의 가변성(Variance), 즉 공변(Covariance)과 반공변(Contravariance)은 특정 타입의 객체를 다른 타입의 객체로 변환할 수 있는 성격을 일컫는다. 이러한 변환을 지원하려면 제네릭 인터페이스나 델리게이트의 정의 부분에 제네릭 공변/반공변을 지원한다는 의미의 데코레이터(decorator)를 추가해야 한다. 공변/반공변을 지원하면 우리가 개발하는 API를 더 다양하고 안전하게 사용할 수 있다. 가변성의 반대는 불변성(Invariance)이라고 한다. 타입의 공변성은 많은 개발자가 접하는 문제지만 이를 정확히 이해하는 사람은 많지 않다. 공변과 반공변이란 타입 매개변수로 주어지는 타입들이 상호 호환 가.. 2023. 6. 22.