Microsoft MVP성태의 닷넷 이야기
교재 194페이지 콜백메서드 질문 있습니다! [링크 복사], [링크+제목 복사]
조회: 553
글쓴 사람
한예지
홈페이지
첨부 파일
 
선생님 안녕하세요!
교재 194 페이지에 다음과 같은 문장이 있습니다.
"타입 자체를 전달해서 실수를 유발할 여지를 남기기보다는 메서드에 대한 델리게이트만 전달해서
이 문제를 해결할 수 있다."

타입 자체를 전달해서 실수를 유발한다는 것이 어떤 경우인지 이해가 되지 않습니다..

그림 4.12와 예제 4.21을 비교해도
target.Do(this) ← 그림 4.12
target.Do(new GetResultDelegate(this.GetResult)) ← 예제 4.21

인수로 넘기는 코드량도 그렇고 전체 코드 길이도 예제 4.21이 더 복잡해보입니다.
타입 자체가 Target 클래스의 Do 함수에 Source만 적으면 되는데
이것이 실수를 유발할 일이 있나요??...
예제 4.21를 통해 델리게이트를 사용해야 될 장점을 잘 모르겠습니다...




donaricano-btn



[최초 등록일: ]
[최종 수정일: 1/16/2021 ]


비밀번호

댓글 쓴 사람
 



2021-01-16 11시44분
콜백을 호출하기 위해 필요한 것은 메서드에 대한 정보일 뿐인데, 타입의 인스턴스를 전달하면 지정된 메서드 이외의 접근도 할 수 있습니다. 따라서 콜백보다는 부수 효과가 발생할 여지가 있습니다. 게다가 타입 정보를 전달해야 하면, target.Do 메서드를 라이브러리화하는 것도 쉽지 않습니다.

일단, 타이핑의 복잡성 문제는 전에 질문했던 https://www.sysnet.pe.kr/3/0/5450 글에 따라 다음과 같이 줄이는 것도 가능합니다.

target.Do(this.GetResult);

하지만, 개발자 본인이 원한다면 그냥 타입을 넘기도록 target.Do 메서드를 작성해도 무방합니다.
정성태
2021-01-16 03시58분
[예지] 답변 감사드립니다! 즐거운 주말 되세요~!!
[손님]

1  2  3  4  5  6  7  8  9  10  [11]  12  13  14  15  ...
NoWriterDateCnt.TitleFile(s)
5184김대훈7/4/20191781저자님의 책을 다 본후에는 [2]
51837/2/20191760.NET Compact Freamwork 컨트롤러 더블버퍼링 [1]
5182wpf 초보자7/2/20191601wpf 질문 드립니다. [1]파일 다운로드1
51817/1/20191759DataGridview Doublebuffer 에 대해서 질문드립니다. [2]
5180김대훈6/25/20191590배열과 반복문에서 질문드립니다 [2]
5177농상6/13/20192506멀티스레드 건의 [2]
5176이선호6/13/20192168안녕하세요. 닷넷 문제로 검색하다 알게되어 들어왔습니다. 현재 IIS 문제가 있어 질문드립니다. [1]
5175Chobo6/12/20192194WPF Ellipse 그리기! [3]
5174농상6/11/20192046ThreadPool 조인에 관해 [1]
5173전우치6/9/20192272공유 리소스에 대한 스레드 동기화 처리를 위해서 lock 이용 시 문의 [3]
5172김대훈6/7/20192028너무힘드네요 공부에 대한조언부탁드립니다 [2]
5171조남석6/4/20191782EX)11-2(treeview)에 대한 질문입니다. [3]
5170레리6/4/20191914Setup 프로젝트 레지스트리 설정 관련 질문입니다. [1]파일 다운로드1
5169농상6/3/20191957멀티스레드 파라미터 관련 [2]
5168익명유저5/30/20191781항상 정말 감사드립니다... [1]
5167WPF5/23/20192179질문드립니다. [1]
5165이대희5/22/20191794Visual Studio 설치 구성요소 문의 (C# 7.3 개정판 관련) [1]
5164레드5/21/20192186실행 과정과 실행파일 디버그 시 Icon변경 질문드립니다. [5]
5163이대희5/20/20191733시작하세요 C# 7.3 프로그래밍 책 도착했습니다. [1]
5162채홍윤5/14/20192690Mono Develop window 설치 [6]
5161정대영5/13/20191549VS 2013에서 C#6.0(.netFramwork 4.6.1) $ 디버깅 오류 [1]
5160초보개발자5/13/20192234wcf 관련 국내 서적 살만한 책이 있나요? [2]
5159sdh25/9/20192281VS 2010 버전에서 생성한 DLL을 VS 2017버전에서 실행 시 에러 [2]
5158sdh5/8/20191628Visual studio 2010 버전에서 생성한 Project를 Visual studio 2017버전에서 실행에러 [1]
5157김경훈5/8/20192112Task 만들때 넘겨주는 CancellationToken은 어디서 사용 되는 건가요? [4]
5156rysoo5/8/20191827yield return의 리턴 타입 질문 드립니다. [4]
1  2  3  4  5  6  7  8  9  10  [11]  12  13  14  15  ...