다음 본문은 도서 이펙티브 C# (빌 와그너)에서 나오는 주제를 다룹니다.
델리게이트의 장점
- 타입 안정적인 콜백을 정의할 수 있다.
- 클래스 간 상호 통신을 수행해야 할 때 클래스의 결합도를 낮출 수 있다.
- 런타임에서 통지 대상을 설정할 수 있고, 다수의 클라이언트에게 통지를 보낼 수도 있다.
(하나의 델리게이트는 여러 메서드를 참조할 수 있다)
.NET Framework 라이브러리는 Predicate <T>, Action<>, Func<>으로 델리게이트를 정의해두었다.
Predicate<T>
반환형이 bool인 델리게이트. Func<T, bool>과 동일하다.
Func
매개변수가 여러 개이며, 반환 값을 가지고 있다.
Action
매개변수가 여러 개지만 반환 타입이 void이다.
멀티캐스트 델리게이트
- 델리게이트에 복수의 메서드를 연결한 것.
- 내부적으로는 연속으로 함수들을 호출하기 때문에 예외가 발생하면 함수 호출이 중단된다.
- 반환 값이 존재한다면, 마지막으로 호출된 함수의 반환 값을 가지게 된다.
결론
- .NET 환경에서 콜백이 필요한 경우 반드시 델리게이트를 사용하자.
'🌍 C# Study > 이펙티브 C#' 카테고리의 다른 글
[09] 박싱과 언박싱을 최소화하라 (0) | 2021.04.23 |
---|---|
[08] 이벤트 호출 시에는 null 조건 연산자를 사용하라 (0) | 2021.04.23 |
[06] nameof() 연산자를 적극 활용하라 (0) | 2021.04.22 |
[05] 문화권별로 다른 문자열을 생성하려면 FormattableString을 사용하라 (0) | 2021.04.22 |
[04] string.Format()을 보간 문자열로 대체하라 (0) | 2021.04.22 |