Microsoft MVP성태의 닷넷 이야기
EventHandler 관련 [링크 복사], [링크+제목 복사],
조회: 11497
글쓴 사람
따봉이
홈페이지
첨부 파일
 

안녕하세요.
항상 감사하고 있습니다.

아래 실제 사용되는 건 똑같은거 같은데 뭐가 다른걸까요?

1. public EventHandler TopBarSystemInitClickEvent { get; set; } = null;
2. public event EventHandler TopBarSystemInitClickEvent = null; //event 가 붙으면 get;set;을 할 수 없음
3. public EventHandler TopBarSystemInitClickEvent ; // 다 빼도 잘 사용됨


Invoke : TopBarRunInspectionClickEvent?.Invoke(this, EventArgs.Empty);
1,2,3 다 이벤트 전달이 잘 되는데
이럴거면 그냥 세번째것만 하는게 간단하고 편한데 왜 굳이 1, 2번 같이 사용하기도 하는 걸까요?








[최초 등록일: ]
[최종 수정일: 8/4/2022]


비밀번호

댓글 작성자
 



2022-08-04 10시54분
우선, 이렇게 분류가 됩니다.

1번: 자동 공용 속성(property)
; https://learn.microsoft.com/ko-kr/dotnet/csharp/programming-guide/classes-and-structs/auto-implemented-properties

2번: 이벤트
; https://learn.microsoft.com/ko-kr/dotnet/csharp/events-overview

3번: 필드
; https://learn.microsoft.com/ko-kr/dotnet/csharp/programming-guide/classes-and-structs/fields

기본은 3번입니다. 단지, 그렇게 필드를 직접적으로 노출시키지 않기 위해, 즉, OOP의 원칙인 정보 은닉을 위해 필드를 public으로 두지는 않고 대신 private으로 필드를 정의한 다음 외부에서 접근하기 위한 수단으로 get/set 메서드를 제공하게 됩니다.

하지만, 그 get/set 메서드의 정의가 번거롭기 때문에 기본 코드만 포함돼 있다면 빠르게 정의하는 용도로 3번을 1번과 같은 식으로 바꿔 씁니다.

반면, 2번은 완전히 다릅니다. 2번의 경우 "event" 유형으로 정의하는 것이기 때문에 "공용 속성"이 아닙니다. 따라서 get/set도 정의할 수 없습니다. delegate와 event의 차이점은 문서를 통해 확인하시고.

------

사실, 위의 사항들은 기본 문법에 해당하는 질문입니다. 아마도 이런 의문들은 코딩을 하시면서 계속 느끼게 될 텐데요, 따라서 가능한 책을 통해 (꼭 제 책이 아니더라도... ^^) 전체적인 문법을 한번 정리하시는 것을 권장합니다.
정성태

... [76]  77  78  79  80  81  82  83  84  85  86  87  88  89  90  ...
NoWriterDateCnt.TitleFile(s)
643해운대끓...5/15/200712551Singleton 패턴 테스트중 하나의 윈폼만 열기 오류파일 다운로드1
644정성태5/15/200713204    답변글 [답변]: Singleton 패턴 테스트중 하나의 윈폼만 열기 오류 [1]
642조성택5/10/200714313스레드와 WinINet? [1]
641한귀순5/8/200713068Code Obfuscate 에 관한 질문. ^^ [2]
640박희진5/7/200712708스마트 클라이언트에서 ActiveX 브라우저 컨트롤을 사용한 경우 javascript 문제 [1]
639김재영5/3/200720009webBrowser클래스에서 띄워지는 Javascript 오류 다이얼로그를 감지할 수 있습니까? [2]
638최민규4/29/200713644SmartPhone / PDA 등에서의 .NET Smartclient [1]
636라이프가드4/27/200714302Insert 오류입니다. CLOB ........ [1]
635박희진4/27/200714752스마트클라이언트 위로 DIV가 못올라오고 스마트 클라이언트 뒤로 숨는 현상 [1]
632해운대끓...4/23/200713222이전에 소개 되었던 확장 매서드 아티클을 읽고 생각나는 의문 [1]
620이방은4/18/200715663질문있어요.. [2]
6196/17/200714895Child Form 에서 Mdi Form 의 메소드 Access 방법 [1]
616김우정4/15/200717955CAS 보안설정을 위한 ActiveX 관련 질문입니다 [2]파일 다운로드1
614박성희4/13/200714229IE Embedded된 스마트클라이언트로 로그인 정보를 보내려면 어떻게 해야 되나요? [2]
612김성헌4/11/200716867Vista, ShellExecute(,"runas",) 문제 [1]
611탑~4/10/200713385페이지 치고 들어가는거 막기... [2]
606한귀순4/3/200714093combobox usercontrol [2]
604채영사랑3/29/200714486<질문> System.Runtime.InteropServices.COMException: 개체가 필요합니다. [2]
603근바이3/28/200714026솔루션 -> 구성관리자 [1]
602김성헌3/27/200714383ActiveX 브로커 모듈과 통신방법은 RPC ??
607정성태4/4/200716518    답변글 [답변]: ActiveX 브로커 모듈과 통신방법은 RPC ??
601엔틱스3/22/200714353자동 로그인의 궁금증 [1]
600창민이3/16/200717576ATL 동적조회 관하여... [2]파일 다운로드1
597ygso...3/14/200713607단순 무식한 궁금증.. [1]
596조빵3/14/200713861SmartClient로 사용자PC의 엑셀을 실행시킬수는 없나요? [1]
594ygso...3/13/200714297ClickOnce를 이용하여 SmartClient를 배포할경우.. [2]
... [76]  77  78  79  80  81  82  83  84  85  86  87  88  89  90  ...