-
카테고리
-
세부 분야
게임 프로그래밍
-
해결 여부
미해결
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을 먼저 더하고 함수를 더하는건 왜 가능한가요?
답변을 작성해보세요.
0
Rookiss
지식공유자2022.04.11
뭔가 엄청 창의적인 시도네요 ㅎㅎ
// onclick = TestDelegate + TestDelegate2;
요 버전에서 뒷부분인 TestDelegate + TestDelegate2가 핵심인데
둘다 함수이고 사실상 함수끼리 덧셈?을 시킨건데
그런 개념이 없으니 에러가 나는 것입니다.
onclick = onclick + TestDelegate + TestDelegate2;
요 방식에서는 의미가 완전히 다른데 왼쪽부터 읽으면
onclick + TestDelegate인데 이는 함수끼리의 덧셈이 아니라,
delegate인 onclick의 operator+를 실행하게 되고
operator+(...)에 TestDelegate 타입의 함수를 받는 것이 정의되어 있으니 잘 실행되는 것입니다.
답변 1