Microsoft MVP성태의 닷넷 이야기
이벤트와 델리게이트의 차이가 궁금합니다. [링크 복사], [링크+제목 복사]
조회: 710
글쓴 사람
영귤
홈페이지
첨부 파일
 
C# 8.0 248 페이지에,
event 의 위력이 발휘될 차례라고 하면서,
PrimeDelegate, AddDelegate, RmoveDelegate 멤버를 제거하고,
public event EventHandler PrimeGenerated;
한 줄만 정의하면 된다고 하는데,
델리게이트도 public 으로 선언하니까 +=, -= 메서드도 사용 가능하고 그냥 같은 코드 같습니다.

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




donaricano-btn



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


비밀번호

댓글 쓴 사람
 



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

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

EventHandler Delegate
; https://docs.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)로 미리 정해 놓은거군요.
[손님]

1  2  3  4  5  6  7  8  [9]  10  11  12  13  14  15  ...
NoWriterDateCnt.TitleFile(s)
5223김태균9/19/20191051책 소개 링크가 7.1버전판으로 이어집니다. [1]
5222냥냥이9/14/20191528프로그래밍 논리력이 많이 부족합니다 [3]
5219티지레몬9/9/20191691c# PCB 자동화 프로그램(윈도우 폼 위주로 작업) 제작 준비 [3]
5218민성9/9/20191033안녕하세요 WPF에서 xaml 안에 다른 xaml을 넣고 싶습니다. [1]파일 다운로드1
5216WPF9/8/20191347WPF에서 XAML Islands를 사용하여 Win2D를 사용하니 그래픽 품질이 저하됩니다. [2]파일 다운로드1
5215허송세월9/5/20191206중복실행 방지 관련 문의 [2]파일 다운로드1
5214JangHun9/4/20191549[DB 테이블의 데이터 변경에 대한 알림 처리] SQL-Server말고 MySQL은 불가능하겠죠? [1]
5213진우8/31/20191296c# 람다 변수 캡쳐 문의 [2]
5212심성보8/29/20191838Clipboard내 여러개의 이미지를 PictureBox로 불러오는 문제 [2]
5211최휘철8/24/2019907CLR20r3 관련된 윈도우 오류입니다. ㅠㅠ 도와주세요. / 아래글 관련하여 관련 파일 올려 드려요^^ [1]파일 다운로드1
5210최휘철8/23/20193160CLR20r3 관련된 윈도우 오류입니다. ㅠㅠ 도와주세요. [5]
5209세퉁8/21/20191246폰트 파일 속성 값을 가져오는 방법 질문 드립니다. [2]파일 다운로드1
5208홍길동8/19/20191189DebugDiag에서 .Net의 Stack Trace를 Windbg에서는 어떻게 볼 수 있나요? [3]
5207민성8/16/20191194네 소스 전체를 올리도록 하겠습니다. [2]파일 다운로드1
5206민성8/14/20191019전 재현 가능하다고 봤는데 다시올리도록 하겠습니다. [1]
5205minyy1@hanmail.net8/14/20191191안녕하세요 .WPF ListBox시 체크박스가 있는데 체크박스에서 체크가 되었는지 알수 있는 방법이 있을까요? [1]
5204영민8/8/20192049안녕하세요 디버깅시 콘솔창을 띠어서 볼수가 없나요? [7]
5202민성8/6/2019953WPF에서 <Application.Resources에 xaml에 있는 icon 값을 저장하고 xaml에 불러다 사용하고 싶은데요 [1]
5201김대훈8/3/20191051상속시 생성자에 대해 질문드립니다 [3]
5200농상7/30/20191738foreach로 데이터 변경 [2]
5190오리다람7/20/20191149질문드립니다. [3]
5189진우7/19/20191605C# 스레드풀 코어별 실행 문의 [2]
5188황태관7/19/20191199비주얼베이직 2019 실행 할때 마다.. [3]
5187플하7/19/20193112UWP 관련 궁금한 사항에 대해서 [1]
5186김대훈7/14/20191518박싱과 언박싱에 대해 [2]
5185농상7/13/20191199Nullable에 대해서 [1]
1  2  3  4  5  6  7  8  [9]  10  11  12  13  14  15  ...