Microsoft MVP성태의 닷넷 이야기
이벤트와 델리게이트의 차이가 궁금합니다. [링크 복사], [링크+제목 복사],
조회: 17238
글쓴 사람
영귤
홈페이지
첨부 파일
 

C# 8.0 248 페이지에,
event 의 위력이 발휘될 차례라고 하면서,
PrimeDelegate, AddDelegate, RmoveDelegate 멤버를 제거하고,
public event EventHandler PrimeGenerated;
한 줄만 정의하면 된다고 하는데,
델리게이트도 public 으로 선언하니까 +=, -= 메서드도 사용 가능하고 그냥 같은 코드 같습니다.

그리고 event 와 EventHandler 식별자는 항상 붙어다니는 것인가요?
뭔가 event 식별자 하나만 있어도 될 것 같은데,
EventHandler 까지 있으니까 둘이 항상 붙어다녀야 하는 것인지,
아니면 EventHandler 외에 다른 게 올수도 있는 것인지 궁금해지네요








[최초 등록일: ]
[최종 수정일: 8/30/2020]


비밀번호

댓글 작성자
 



2020-08-30 01시46분
그러니까, event는 delegate의 약식 표현입니다. delegate의 사용 사례 중 "이벤트"처럼 다룰 수 있는 것 하나를 닷넷 방식대로 일종의 표준화를 시킨 것입니다.

그리고 EventHandler가 항상 붙어다니는 것은 아닙니다. EventHandler도 결국 delegate의 하나로,

EventHandler Delegate
; https://learn.microsoft.com/en-us/dotnet/api/system.eventhandler?view=netcore-3.1

EventHandler로 지정한 event는 인자가 (object? sender, EventArgs e)로 정해진 이벤트 핸들러가 정의됩니다. 예를 들어 다음과 같이 또 다른 delegate를 정의하면,

public delegate void MyHandler(object sender);

이벤트를 "public event MyHandler OnClicked;"라고 정의할 수도 있습니다. (혹시, 이 답변으로도 부족한 부분이 있으면 또 질문해 주세요. ^^)
정성태
2020-09-29 08시53분
[gwise] EventHandler는 닷넷에서 파라미터를 (object? sender, EventArgs e)로 미리 정해 놓은거군요.
[guest]

... 76  77  78  79  80  81  82  83  84  85  86  87  88  89  [90]  ...
NoWriterDateCnt.TitleFile(s)
213궁금이6/18/200512522Winform 형태의 NTD에서 사용자 로그인 성공 여부 정보 유지하는 방법 [1]
212궁금이6/16/200510522ActiveX 컨트롤이 NTD에 이상이 없는지요? [1]
211류성태6/15/200511118smart client에 관하여.... [1]
206헤커의작...6/14/200510097[질문] 안녕하세요. 성태님의 홈페이지에서 화면전환시 처리되는 것에 관련된 건 [3]
205김종욱 6/12/200510623com+ 에서 서버 소켓을 열고 싶고요... com+에서 thread는 어떻게 돌리는지 알고 싶습니다
209정성태6/14/200510616    답변글 [답변]: com+에서 서버 소켓을 열고 싶고요... com+에서 thread는 어떻게 돌리는지 알고 싶습니다
204정현일6/9/200510818Smart Client 실행시 SecurityException파일 다운로드1
208정성태6/14/200511225    답변글 [답변]: Smart Client 실행시 SecurityException [1]
203나그네6/9/200511071태오 사이트 Smart Client 강좌중에서요
207정성태6/14/200510652    답변글 [답변]: 태오 사이트 Smart Client 강좌중에서요
210나그네6/15/200510846        답변글 [답변]: [답변]: 태오 사이트 Smart Client 강좌중에서요파일 다운로드1
198이지훈6/2/2005100772003이랑 2005랑 함께 사용하는 방법이 없을까요?
201정성태6/6/200510704    답변글 [답변]: 2003이랑 2005랑 함께 사용하는 방법이 없을까요?
197이지훈6/2/2005107552005 에서 컴포넌트 제작
200정성태6/6/200510237    답변글 [답변]: 2005 에서 컴포넌트 제작
196김종욱5/24/200511388익스플러 툴 벤드 제작... for .NET [1]파일 다운로드1
199정성태6/6/200510870    답변글 [답변]: 익스플러 툴 벤드 제작... for .NET
202김종욱6/9/200511391        답변글 [답변]: [답변]: 익스플러 툴 벤드 제작... for .NET [1]
194홍지철5/18/200510586IE에서 Winform control embedded작성시 문제점
195정성태5/19/200511165    답변글 [답변]: IE에서 Winform control embedded작성시 문제점
192헤헤5/13/200510768이것좀봐주세요
193정성태5/13/20059879    답변글 [답변]: 이것좀봐주세요
186기범5/9/200510473안녕하세요2
187정성태5/9/200510953    답변글 [답변]: 안녕하세요2
184기범5/9/200510406안녕하세요
185정성태5/9/200510778    답변글 [답변]: 안녕하세요
... 76  77  78  79  80  81  82  83  84  85  86  87  88  89  [90]  ...