[C#]17.대리자와 이벤트

안녕하세요 유랑입니다.



이번 시간에는 대리자와 이벤트에 대해서 알아보겠습니다.

대리자는 콜백을 구현하기 위해서 사용되는데요.

대리자 선언 예로 한 번 알아볼까요?




1. 대리자



대신 어떤 일을 해줄 코드를 두고, 이 코드가 실행할 세부 코드는 

컴파일 시점이 아닌 실행 시점에 부여하는 방식이 대리자입니다.

이름그대로 비서처럼 대신 어떤 일을 해주는 방식이죠.



1-1) 대리자란



대리자는 delegate 키워드를 이용해서 선언합니다.

대리자를 이용하여 콜백을 구현하는 과정은 다음과 같습니다.

나머지는 코드를 통해서 알아보겠습니다.


- 대리자를 선언

- 대리자의 인스턴스를 생성

- 대리자를 호출









1-2) Callback



프로그래밍을 하다 보면 '값'이 아닌 '코드'를 이용해 매개 변수로 넘기고 싶을 때가 많습니다.

이런 때 대리자를 사용하면 어떻게 될까요?

코드를 통해서 알아보겠습니다.













1-3) 일반화 대리자



대리자는 보통의 메소드뿐 아니라 일반화 메소드 참조도 가능합니다.

Compare 대리자를 일반화해서 선언하면 다음과 같습니다.













1-4) 대리자 체인



대리자에는 재미있는 속성이 있습니다.

바로 여러 개의 메소드를 동시에 참조할 수 있다는 것인데요.

+= 연산자를 이용해 대리자 체인을 만들고,

-= 연산자를 이용해 대리자 체인을 끊어낼 수 있습니다.

코드를 통해서 알아보겠습니다.













1-5) 익명 메소드



메소드를 선언할 때 한정자와 반환할 값(void), 매개 변수가 없어도 이름만은 있어야 합니다.

그런데 익명 메소드라니 과연 어떤 것일까요?

이름을 제외한 메소드의 구현 delegate를 이용해서 만들어 보겠습니다.











1-6) 이벤트



사용자가 버튼을 클릭했을 때나 어떤 일이 생겼을 때 알려주는 기능을 이벤트라고 합니다.

이벤트는 대리자를 event 한정자로 수식해서 만듭니다.


- 대리자를 선언

- 클래스 내에 event 한정자로 수식해서 선언

- 이벤트 핸들러를 작성

- 클래스의 인스턴스 생성 후 이벤트 핸들러를 등록

- 이벤트가 발생하면 이벤트 핸들러가 호출됨











2. 마무리



오늘은 대리자와 이벤트에 대해서 배워보았습니다.

Callback구현과 이벤트 처리를 어떻게 해주는지 조금이나마 알 수 있었네요.

너무 어려운것 ㅠㅠ

오늘도 고생하셨습니다.

감사합니다.




수업자료: https://github.com/YouRang12/-Tistory-CShop---Basic







댓글

Designed by JB FACTORY