1.콜백
1)정의:
-피호출자가 호출자를 다시 호출하는 것.
-다른 코드의 인수로서 넘겨주는 실행 가능한 코드를 말한다.
2.델리게이트(대리자)
1)정의
-코드(메소드)를 대신 실행하는 객체
-메소드를 호출하듯 사용(즉, 인수를 입력하고 결과를 반환받음)
-단, 대리자가 실행할 코드는 컴파일이 아닌 실행 시점에 결정
2)Func과 Action
Func과 Action은 마이크로소프트가 미리 선언해둔 대리자이다.
-Func은 결과를 반환하는 메소드 (반환값 있음)
-Action은 결과를 반환하지 않는 메소드 (반환값 없음)
3)델리게이트의 장점
-타입 안정적인 콜백을 정의할 수 있다.
-인터페이스보다 결합도를 낮출 수 있다.
-런타임에 설정할 수 있고 다수의 클라이언트에 보낼 수 있다.
4)주의점
-델리게이트는 멀티캐스트(가지고 있는 모든함수를 호출하는것)가능한데
예외가 던져지면 호출과정이 중단된다.
-델리게이트의 반환값에 유의해야한다.
델리게이트의 반환값은 마지막으로 호출된 함수의 반환값이 된다.
결론
콜백을 구현할 때 델리게이트가 좋다.
몇가지 주의점을 상기하고 사용하도록 하자.
'C# > 이펙티브 C#' 카테고리의 다른 글
| 아이템9.박싱과 언박싱을 최소화하라. (0) | 2023.06.30 |
|---|---|
| 아이템8.이벤트 호출 시에는 null 조건 연산자를 사용하라. (0) | 2023.06.29 |
| 아이템6.nameof 연산자를 적극 활용하라. (0) | 2023.06.24 |
| 아이템5.문화권별로 다른 문자열을 생성하려면 FormattableString을 사용하라. (0) | 2023.06.23 |
| 아이템4. string.Format()을 보간 문자열로 대체하라. (0) | 2023.06.21 |