• 카테고리

    질문 & 답변
  • 세부 분야

    게임 프로그래밍

  • 해결 여부

    미해결

딜리게이트 이해 질문입니다

21.08.08 17:45 작성 조회수 210

0

제가 완벽하게 이해못한거같아 질문드립니다!

질문1. 대리자 딜리게이트를 쓰는이유

함수나 클래스내에 수많은 기능이 있고

그 모든 기능을 전부 쓸필요가 없다면

필요한 기능(함수)만 입력하여

반환 받아 사용하는 편리성? 역할이 맞는가요

질문2. 대리자 사용방법

수업을 들으며 3가지를 만들어야하는거 같았습니다

1. 대리자 delegate

2. 대리자가 사용할 함수(이걸 인자로 넘김)

3. 대리자 함수를 인자로 받으면 그에맞는 값을 반환하는함수

==================================

( 수업에선 delegate int OnClicked(); )

(우리가 인자에 넣을)함수를 전해주는 대리자

 delegate + 반환형식 + 대리자이름(); 

여기서 대리자와 같은 형식이며

대리자와 같은 클래스내 함수들을

s라고 하면

메인함수에서

대리자   대  =  new 대리자();

로 객체 생성하고

대리자 대 = new 대리자(s);  또는 대 = s ;  

대리자에 함수 전달

===================================

(수업에선 ButtonPressed(Onclicked clickedFunction))

함수를 지닌 대리자 혹은  함수 자체를 인자로 받는

함수 하나 더 생성

static void Result( 함수 혹은 [함수가 담긴 대리자] )

{   함수();  }

역할은 인자로받은 함수내 필드값을 반환 해주는 함수

======================================

끝으로 대리자에 들어가는 함수들은

대리자와 같은 형식이어야하고 (같은 반환형식)

각 함수마다 필드내용은 다르게 설정가능?!?

(콘솔명령어로 테스트해보니 그런거같아보여서요)

static int test1(){ return 1; }

static int test2(){ return 2; } 가 있다면

대리자에 test1함수를 넣고

대리자 혹은 test1함수를

result(대리자 인자)의 인자로 넣을시

1의 값을 반환

대리자에 test2함수를 넣으면

2의 값이 반환되는것이 맞나요?
====================================

답변 1

답변을 작성해보세요.

0

델레게이트는 복잡한 부분이라
지금 이해하려 할 필요 없고
나중에 등장할 때 다시 돌아와 보는 것을 추천 드립니다.
리스너 패턴이나 함수 인자로 함수를 넘기는 등 다양한 상황에서 유용합니다.
나머지 문법적인 문법은 테스트하신 것이 맞습니다.