10장 수업내용

DEVELOP/C# 2006. 9. 28. 14:31
※대리자(Delegate)
대리자란?
메소드를 대신해서 호출

코드 -> 대리자호출 -> 메소드호출
                           -> 메소드호출
                           -> 메소드호출

델리게이트의 선언
선언위치 : 네임스페이스,클래스
선언방법 : 메소드와 비슷
[접근지정자] delegate [반환형] [대리자명]([매개변수리스트]);
//반환형/매개변수리스트  <- 대리자가 호출할 수 있는 메소드의 모양?형식?


델리게이트가 호출할 수 있는 메소드
반환형과 메개변수리스트가 일치하는 메소드
ex1. delegate void del1();
-> void [메소드명](){....};
ex2. delegate string del2(string arg);
-> string [메소드명](string arg){....};

델리게이트의 메소드 등록
[델리게이트명] 변수 = [메소드명];
ex. delegate void Del1();
-> void Method1(){....};
-> De1 del = Method1;  //del이 Method1호출할 수 있다.
-> del += Method2; //del은 Method1~2를 호출할 수 있다.

델리게이트에 등록된 메소드 제거
del -= Method2; //제거


※이벤트(Event)

개념 : 사건의 발생
이벤트와 관련된 개체

이벤트 발생자  //  교실
       ↓
이벤트 수신자  //  소방서
       ↓
이벤트 처리자  //  소방차

C#에서 이벤트와 관련된 개체
이벤트 발생자 : 이벤트 델리게이트(대리자)를 실행하는 실행하는 개체
이벤트 수신자 : 이벤트 발생자가 실행하는 메소드를 가지고 있는 개체
이벤트 처리자 : 이벤트 수신자의 실행 메소드(이벤트 핸들러)

Ex
버튼  //  이벤트 발생자  : 이벤트 델리게이트 실행

폼  //  이벤트 수신자 : 이벤트 델리게이트가 실행할 메소드를 가지고 있다.

폼의 메소드  //  이벤트 처리자


이벤트 발생개체 코딩방법
이벤트를 선언
[접근제한자] event [델리게이트명] [이벤트명];
(델리게이트형의 필드를 정의하는 것)

이벤트 발생방법
->델리게이트의 실행방법과 동일
이벤트명(매개변수리스트);
ex. attackedEvent(매개변수리스트);

이벤트의 델리게이트형
[접근지정자] delegate void [대리자명](object sender, EventArgs args); //관례적
                                                     이벤트발생자 , 이벤트에 대한 정보 또는 자식개체(상속)

이벤트 수신자 코팅방법
이벤트 발생개체로부터 발생된 이벤트를 처리할 메소드를 등록 -> 델리게이트의 메소드 등록
이벤트명 = 메소드명1;
이벤트명 += 메소드명2;

이벤트 처리자 코딩방법
void [메소드명] (object obj, EventArgs args){....}
AND