관리 메뉴

심재운 블로그

델리게이트와 이벤트(Event)의 관계에 대한 설명(2) 본문

닷넷관련/CSharp

델리게이트와 이벤트(Event)의 관계에 대한 설명(2)

재우니 2009. 2. 12. 22:58



이번에는 우리가 기존부터 가지고 활용했던 자동차의 소스를 가지고 요리해 볼 생각입니다.

소스를 event 와 delegate 를 활용한 부분만 소스를 나누어서 설명하고, 
총체적은 소스는 자료게시판에 올릴 것이니 다운받으셔서 테스트 해보시기 바랍니다.






115줄과 121줄에 대해 간략히 설명을 하겠습니다. 120번 줄에 OnCarReqMessage(this,e)는 이벤트에 보낼 객체는 
this 로 표기했습니다. 본인 자체이기 때문이죠. 


그리고 event 의 매개인자로 사용하기 위해 117번째줄에 CarMessageEventArgs의 객체를 생성하였습니다. 


클래스는 130번줄에 있습니다. EventArgs 를 상속받아서 처리하고 있는데요. 아직 상속에 대해 설명을 드리지 못했는데요.  이 ":" 라는 구분자를 사용하여 EventArgs 클래스의 모든 기능을 상속받아 대행하여 사용합니다. 

그래서 인자인 e 로 호출을 합니다.







객체.event메소드 += new delegate 메소드 (메소드); 로 모양새를 만들어 사용하고 있는데요. 
event 객체에서는 반드시 '+='나 '-=' 의 연산자만 가능하며, 다른 연산자를 사용할 경우 에러가 발생됩니다. 
이는 안정성 때문에 그렇다고 하네요. 


new Car.CarReqMessage(Repiring); 은 event 가 호출할 수 있도록 delegate 함수객체를 만듭니다. new 연산자를 통해서 delegate 함수를 만들며, 181번째 줄은 메소드를 호출하여 delegate 함수를 순서대로 호출하게 되는거죠.



결과값은?






posted by 심재운 (shimpark@gmail.com)

0 Comments
댓글쓰기 폼