[C#]17.대리자와 이벤트
- 프로그래밍 언어 - C#
- 2019. 1. 14. 00:40
안녕하세요 유랑입니다.
이번 시간에는 대리자와 이벤트에 대해서 알아보겠습니다.
대리자는 콜백을 구현하기 위해서 사용되는데요.
대리자 선언 예로 한 번 알아볼까요?
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