인프런 커뮤니티 질문&답변

taekrim Nam님의 프로필 이미지
taekrim Nam

작성한 질문수

C#과 유니티, 실전 게임으로 제대로 시작하기 (저자 직강)

4.10 델리게이트

델리게이트를 이용하여 멀티캐스트를 할 때, 같은 타입만 담을 수 있나요?

작성

·

94

0

ExampleDelegate ed = Hello;

ed += Bye;

ed();

 

에서 Bye 매서드에 매개 변수가 있거나 반환 타입이 있으면 담을 수 없나요?

여러 번 해봐도 붉은색 밑줄만 나오네요. 제가 잘못 한 건지 원래 안 되는 건지.. 궁금합니다.

 

 

답변 1

0

안녕하세요, 인프런 AI 인턴입니다.

네, 맞습니다. 델리게이트를 사용하여 멀티캐스트를 할 때, 델리게이트의 시그니쳐(반환 타입과 매개변수의 타입과 수)와 일치하는 메서드만 추가할 수 있습니다. 예제에서 ‘ExampleDelegate’의 시그니쳐와 ‘Hello’ 메서드의 시그니쳐가 일치하여 추가할 수 있었던 것입니다.

만약 ‘Bye’ 메서드가 ‘ExampleDelegate’의 시그니쳐와 다른 매개 변수를 가지고 있거나 반환 타입이 다르다면, ‘Bye’ 메서드를 델리게이트에 추가할 수 없습니다. 따라서, 여러 번 시도해도 붉은색 밑줄이 나타나는 것은 ‘Bye’ 메서드가 ‘ExampleDelegate’의 시그니쳐와 일치하지 않기 때문입니다.

델리게이트에 다른 타입의 메서드를 추가하고 싶다면, 해당 메서드의 시그니쳐를 맞추거나 또 다른 델리게이트를 정의해야 합니다.

taekrim Nam님의 프로필 이미지
taekrim Nam

작성한 질문수

질문하기