정리가 필요한 카테고리(추후 정리)/C#,Unity

C#] 델리게이트(Delegate)의 호환성

TwinParadox 2019. 2. 5. 21:46
728x90

타입 호환성


모든 델리게이트 타입은 다른 모든 델리게이트 타입과 호환되지 않음.

메서드 대상이 동일한 델리게이트 인스턴스는 상등으로 간주.

멀티캐스트 델리게이트는 같은 대상 메서드들이 같은 순서로 등록된 경우에 상등으로 간주.




매개변수 호환성


어떤 메서드를 호출 시, 그 메서드의 매개변수가 요구하는 것보다 구체적인 형식의 인수를 지정할 수 있음.

델리게이트의 매개변수 형식이 대상 메서드의 매개변수 형식보다 구체적일 수 있으며, 이를 반변성(Contravariance)라고 함.


이러한 특성은 기본적으로 다형성을 가진 메서드의 정상적인 작동 방식임.




반환 형식의 호환성


어떤 메서드를 호출 시, 호출자가 요구한 것보다 구체적인 형식 값을 메서드가 반환 가능.

델리게이트는 대상 메서드의 반환 형식보다 더 구체적으로 반환할 수 있으며, 이를 공변성(Covariance)라고 함.


이 역시 다형성을 가진 메서드의 정상적인 작동 방식임.





728x90