• 카테고리

    질문 & 답변
  • 세부 분야

    게임 프로그래밍

  • 해결 여부

    미해결

Delegate 질문이요

22.04.07 05:06 작성 조회수 139

0

delegate int OnClicked();

OnClicked onclick;
onclick = TestDelegate;
onclick = new OnClicked(TestDelegate);

// onclick = TestDelegate + TestDelegate2;
onclick = new OnClicked(TestDelegate) + new OnClicked(TestDelegate2);

onclick = onclick + TestDelegate + TestDelegate2;    
//  onclick = TestDelegate + TestDelegate2 + onclick;
 
delegate 체이닝 관련해서 이것저것 해보다가 발견했는데, 
1. 앞에 주석 처리를 한 부분만 오류가 발생하는데 그 이유가 뭔가요?  체이닝이 아니라 단순히 함수끼리의 더하기가 되어버려서 오류가 발생한건가요?
 
2.  밑에서 두번째 줄 코드에 onclick을 먼저 더하고 함수를 더하는건 왜 가능한가요?
 
 
 
 
 
 
 
 
 

답변 1

답변을 작성해보세요.

0

뭔가 엄청 창의적인 시도네요 ㅎㅎ

// onclick = TestDelegate + TestDelegate2;

요 버전에서 뒷부분인 TestDelegate + TestDelegate2가 핵심인데
둘다 함수이고 사실상 함수끼리 덧셈?을 시킨건데
그런 개념이 없으니 에러가 나는 것입니다.

onclick = onclick + TestDelegate + TestDelegate2;

요 방식에서는 의미가 완전히 다른데 왼쪽부터 읽으면
onclick + TestDelegate인데 이는 함수끼리의 덧셈이 아니라,
delegate인 onclick의 operator+를 실행하게 되고
operator+(...)에 TestDelegate 타입의 함수를 받는 것이 정의되어 있으니 잘 실행되는 것입니다.

감사합니다!