C#/이펙티브 C#

아이템7. 델리게이트를 이용하여 콜백을 표현하라.

공부를하자 2023. 6. 25. 19:54

1.콜백

  1)정의:

     -피호출자가 호출자를 다시 호출하는 .

     -다른 코드의 인수로서 넘겨주는 실행 가능한 코드를 말한다.

2.델리게이트(대리자)

   1)정의

       -코드(메소드) 대신 실행하는 객체

    -메소드를 호출하듯 사용(, 인수를 입력하고 결과를 반환받음)

    -, 대리자가 실행할 코드는 컴파일이 아닌 실행 시점에 결정

2)Func Action

   Func Action 마이크로소프트가 미리 선언해둔 대리자이다.

  -Func 결과를 반환하는 메소드 (반환값 있음)

  -Action 결과를 반환하지 않는 메소드 (반환값 없음)

 

 

3)델리게이트의 장점

 -타입 안정적인 콜백을 정의할 있다.

 -인터페이스보다 결합도를 낮출 있다.

 -런타임에 설정할 있고 다수의 클라이언트에 보낼 있다.

 

4)주의점

 -델리게이트는 멀티캐스트(가지고 있는 모든함수를 호출하는것)가능한데

   예외가 던져지면 호출과정이 중단된다.

 -델리게이트의 반환값에 유의해야한다. 

  델리게이트의 반환값은 마지막으로 호출된 함수의 반환값이 된다.

 

결론

콜백을 구현할 델리게이트가 좋다.

몇가지 주의점을 상기하고 사용하도록 하자.